Files
winning-wallet-finder/USAGE.md
T
gavindiaz 125470b24a sync: upstream + our customizations (dashboard, healthcheck, docs)
Synced from github/main: aebcfa2d copybot: live paper feed [skip ci]
Our additions: serve_dashboard.py, bot_dashboard.html, mihomo-healthcheck.sh,
中文文档, 我们的钱包配置
2026-07-21 07:35:48 +08:00

25 KiB
Raw Blame History

项目使用手册(USAGE.md

Polymarket 跟单系统 — 找会赢的钱包 → 纸盘回测 → 实盘跟单

写于 2026-07-17。配合 README.mdlive/README.mdlive/仪表盘说明.mdHANDOFF.md实盘配置.md 一起看。


0. 三句话理解项目

  1. 找钱包:从 Polymarket 全网数据里,按 5 道统计门(z-score、FDR、样本外一致性等)筛出 ~3% 真有 edge 的钱包,落到 live/watch_skilled.json;再用"信念门槛(每钱包自己下注前 20% 才叫信念单)"筛出 12 个可复制的,落到 live/watch_sharps.json
  2. 回测:拿这些钱包的历史已结算单,按 4% 资金 + 真实手续费 + 0.5% 滑点重放一遍,写出 $1000 的纸盘账户进出,落到 live/portfolio.json(纸盘与实盘共用同一个回放引擎,确保一致)。
  3. 跟单:跟单 botcopybot.py)24/7 监听这些钱包的新交易,paper 模式只记账,live 模式(--live + LIVE_CONFIRM)才真下单。

整个系统分三层:离线找钱包 + 纸盘验证 → 跟单 bot 跑 paper → 跟单 bot 切 live


1. 仓库结构

winning-wallet-finder/
├── README.md                   ← 项目总览(论文背景、findings
├── HANDOFF.md                  ← 接手文档(关键决策与已知坑)
├── FINDINGS.md                 ← 研究发现汇总
├── 实盘配置.md                 ← 实盘钱包/私钥配置(已写过)
├── ETHERSCAN_MIGRATION.md      ← Etherscan 数据迁移说明
├── requirements.txt            ← 依赖(核心用 Python 3 stdlib
│
├── smart_money.py              ← Polymarket data-api 客户端(共用)
├── insider.py                  ← 内部人/聪明钱检测
├── copybot.py                  ← ★ 跟单 botpaper/live 两用)
├── copytrade.py                ← 实盘下单引擎(py-clob-client 封装)
├── redeem.py                   ← 兑现中奖单
├── preflight_live.py           ← live 前的只读凭证检查
├── polymarket_connectivity_test.py  ← API 连通性测试
│
├── config.example.json         ← 通用配置示例(无密钥)
├── config.live.example.json    ← ★ 实盘配置模板(无密钥)
├── copybot_state.json          ← bot 状态(持续累积)
├── copybot_fills.jsonl         ← bot 成交记录(每行一笔)
├── fly.Dockerfile              ← 云端部署镜像
├── fly.toml / fly.live.toml    ← Fly.io 部署配置
│
├── live/                       ← ★ 离线分析与纸盘回测
│   ├── README.md               ← live/ 子模块说明
│   ├── 仪表盘说明.md            ← dashboard.html 字段说明
│   ├── wallet筛选完整流程.md    ← 钱包筛选细节
│   │
│   ├── enumerate.py            ← 候选池发现(top traders
│   ├── collect.py              ← 把候选钱包历史拉进 cache.duckdb
│   ├── cache.py                ← DuckDB 缓存层(所有离线分析的"事实来源"
│   ├── skill.py                ← 5 道门打分 → watch_skilled.json
│   ├── conviction_scan.py      ← 信念钱包扫描
│   ├── validate_timing.py      ← 复制可行性 + 费后 Copy P&L → watch_sharps.json
│   ├── sync_floors.py          ← 把每钱包 p80 信念门槛同步进 copybot 配置
│   ├── payouts.py              ← 链上 payout 校验(防幸存者偏差)
│   ├── trust.py                ← 信任度评估(哪些 cache 行可信)
│   ├── slug_cache.py           ← market → event 关联缓存
│   │
│   ├── portfolio.py            ← ★ $1k 纸盘回测引擎
│   ├── portfolio.json          ← portfolio.py 产物(仪表盘读这个)
│   ├── backtest.json           ← ★ 纸盘配置(天数、钱包列表、class_pct
│   ├── copybot.paper.json      ← ★ paper 模式 bot 配置(bot 直接读)
│   ├── copybot_live.json       ← paper bot 实时输出的 feed(仪表盘读)
│   ├── copybot_live_real.json  ← live bot 的 feed
│   ├── watch_skilled.json      ← skill.py 产物
│   ├── watch_sharps.json       ← validate_timing.py 产物(仪表盘主表)
│   ├── conviction_wallets.json ← conviction_scan.py 产物
│   │
│   ├── dashboard.py            ← 生成 dashboard.html
│   ├── dashboard.html          ← ★ 自包含 HTML 仪表盘(双击打开)
│   ├── daily.sh                ← ★ 一键每日流水线(见 §7)
│   ├── discord_daily.py        ← Discord 每日摘要推送
│   │
│   └── tests/, archive/        ← 测试与归档研究代码
│
├── host/                       ← 云端/部署辅助(Fly、桥接、钱包 bootstrap
├── wide/                       ← 历史归档的 subgraph 扫描(frozen
├── tests/                      ← 单元测试
└── PolymarketDocumentation-main/  ← 官方文档(参考用)

2. 数据流(一张图)

   Polymarket data-api ──► enumerate.py ──► candidates.json
                              │
                              ▼
                       collect.py + cache.py ──► cache.duckdb  (本地事实来源)
                              │
                ┌─────────────┼─────────────┐
                ▼             ▼             ▼
           skill.py   conviction_scan.py  payouts.py/trust.py
                │             │
                ▼             ▼
        watch_skilled.json  watch_sharps.json ──┐
                                │               │
                                ▼               │
                          sync_floors.py        │
                                │               │
                                ▼               ▼
                       copybot.paper.json   dashboard.html
                                │               ▲
                                ▼               │
                         copybot.py (paper) ────┘
                                │
                                ▼
                        copybot_live.json ──► dashboard / GitHub Pages

       cloud run                            (每日定时)
       copybot.py --live ──► CLOB API ──► 真实成交

3. 常用命令速查

3.1 一次性:建库

pip install duckdb py-clob-client web3    # 实盘需要后两个
cd live
python enumerate.py 180                    # 发现候选(过去 180 天)
python collect.py                          # 拉取所有候选钱包历史(首次慢,可断点续传)
python skill.py                            # 5 道门打分 → watch_skilled.json
python conviction_scan.py                  # 信念钱包扫描
python validate_timing.py                  # 复制可行性 → watch_sharps.json
python sync_floors.py                      # 把每钱包 p80 门槛写进 copybot 配置
python dashboard.py                        # 生成 dashboard.html
python portfolio.py --days 30              # 跑 30 天纸盘回测 → portfolio.json

3.2 日常:每日流水线

cd live
./daily.sh                                 # 一键:发现 → 刷新 → 打分 → 仪表盘 → 提交推送 → Discord 摘要

按顺序跑:discover → freshen → re-score → sharps → floors → portfolio → dashboard → publish。

3.3 跑纸盘 bot24/7

python copybot.py --config copybot.paper.json --poll 60
  • --poll 60:每 60 秒轮询一次(无 Alchemy webhook 时用这个)
  • 默认用 WebSocket 订阅 RTDS(实时数据流),延迟最低
  • copybot_state.json 自动持久化,重启可恢复

3.4 切实盘(真钱

export LIVE_PRIVATE_KEY=0x...
export LIVE_FUNDER_ADDRESS=0x...
export LIVE_SIGNATURE_TYPE=1            # 邮箱登录 = 1
export LIVE_CONFIRM="I understand real money is at risk"

python copybot.py --config config.live.json --live --poll 60

详见 实盘配置.md

3.5 其它常用命令

用途 命令 说明
测试 API 连通性 python polymarket_connectivity_test.py 7 个端点一次测完
实盘前凭证检查 python preflight_live.py 只读,不会下单
单钱包 dry-run python copybot.py --test-wallet 0xabc... 走一遍流程但不持久化
强制刷特定钱包 python -c "import cache; cache.invalidate(['0xabc...'])" 跳过 14 天缓存
手动跑纸盘 python portfolio.py --wallets 0xabc,0xdef:whale --days 30 --out /tmp/p.json 临时换钱包跑
只跑一次回测 python copybot.py --poll-once --config copybot.paper.json 给 cron 用
把 paper feed 跟 model 比对 跑完 portfolio.py 后看 history/calibration.csv 校准核心指标
重算某钱包门槛 python sync_floors.py 把 p80 写回 copybot 配置

4. 关键配置文件

4.1 live/backtest.json(纸盘回测用)

{
  "days": 30,                    // 回看窗口长度(滚动)
  "class_pct": {                 // 每类钱包的下注比例(占总资金)
    "volume": 0.04,              // 普通钱包:每笔 4% 当前权益
    "whale": 0.12                // whale12%
  },
  "wallets": [                   // 要回测的钱包列表
    {
      "wallet": "0x...",
      "name": "Kruto2027",
      "class": "volume",         // 或 "whale"
      "floor": 80.0              // 信念门槛(可选;缺省从历史 p80 算)
    }
  ]
}

跑:python portfolio.py --days 7 覆盖 days,或 --wallets 0xabc,0xdef:whale 临时换列表。

4.2 live/copybot.paper.json(纸盘 bot 配置)

{
  "mode": "paper",
  "bankroll_usd": 1000.0,        // 起始资金
  "bankroll_pct": 0.04,          // 每笔占当前权益的比例
  "wallets": [...],              // 跟哪些钱包
  "follow": {
    "buy_only": true,            // 只跟买,不跟卖(卖通常意味着平仓)
    "min_their_usd": 25.0,       // 信号钱包下注 ≥ $25 才跟
    "min_entry": 0.0,
    "max_entry": 0.95,           // 不买 > ¢95 的热门(赔率薄)
    "class_pct": { "volume": 0.04, "whale": 0.12 }
  },
  "risk": {
    "min_order_usd": 5.0,        // Polymarket 单笔最小 $5
    "max_per_event": 0           // 同事件并发数(0 = 不限)
  },
  "price_guard_abs": 0.05        // 价格偏离保护(信号价 vs 我看到的)
}

4.3 config.live.example.json(实盘模板)

{
  "mode": "live",
  "bankroll_usd": 22.28,         // ★ 必须等于你实盘钱包的真实余额(启动时和链上比对)
  "bankroll_pct": 0.04,
  "price_guard_abs": 0.05,
  "taker_fee_rate": 0.03,        // Polymarket V2 taker fee (2026-03-30 起)
  "discord_webhook": "",
  "follow": { ... },
  "risk": { ... },
  "live": {
    "private_key": "",           // ← 留空,靠 env 注入
    "funder_address": "",        // ← 留空,靠 env 注入
    "signature_type": 1,         // ← 邮箱登录固定 = 1
    "order_type": "FAK",         // Fill-And-Kill:能成交多少成交多少
    "auto_redeem": false,        // 兑现交给 redeem.py
    "rpc_url": ""
  },
  "wallets": [...],              // 实盘跟的钱包(必须跟 paper 一致)
  "feed_path": "live/copybot_live_real.json",
  "fill_log": "copybot_fills.live.jsonl",
  "shadow_log": "rtds_shadow.live.jsonl"
}

强烈建议:不要碰 live.private_key/live.funder_address,用环境变量注入(LIVE_PRIVATE_KEY 等),见 §3.4 与 copybot.py:2303-2308

4.4 live/watch_skilled.jsonlive/watch_sharps.json

  • 这两个是 skill.py / validate_timing.py 的输出不要手改
  • daily.sh 会每天重算并 commit/push
  • 仪表盘(dashboard.html)直接读这两个文件

4.5 config.example.json(通用配置)

只放了 Discord webhook + Alchemy key + 一个 watch 列表,是 config.live.example.json 的简化版——实盘请用后者,别用这个。


5. 核心变量怎么改

5.1 改跟单金额

变量 在哪个文件 含义 推荐范围
bankroll_usd copybot.paper.jsonconfig.live.json 起始资金(实盘要等于链上余额) 看你预算
bankroll_pct 同上 每笔占当前权益的比例(凯利式复利) 28%
class_pct.volume / .whale backtest.json + copybot.paper.jsonfollow.class_pct 按钱包类型区分下注比例 volume 26%, whale 815%
min_order_usd copybot.paper.jsonrisk.min_order_usd Polymarket 单笔最小 ≥ $5
max_per_event copybot.paper.jsonrisk.max_per_event 同事件最多几笔并发 13(避免一输全输)
max_entry copybot.paper.jsonfollow.max_entry 不买价格高于 ¢? 的票 0.850.95

改纸盘 → 实盘要做的一致性检查daily.sh 里已经写好自动警告):

python -c "import json; print(json.load(open('copybot.paper.json'))['follow']['class_pct'])"
python -c "import json; print(json.load(open('backtest.json'))['class_pct'])"
# 两个必须完全一致,否则纸盘和实盘会用不同金额

5.2 改跟哪些钱包

方法 A推荐:用 paper 配置)

  1. 编辑 live/copybot.paper.jsonwallets 数组
  2. 同时编辑 live/backtest.jsonwallets(纸盘回测跟同一个集)
  3. 重启 bot

方法 B调试用CLI 临时覆盖)

python portfolio.py --wallets 0xabc,0xdef:whale,0x123:volume --days 7
python copybot.py --test-wallet 0xabc...    # 只跑这一个

每钱包字段:

  • walletPolygon 地址(小写)
  • name:仪表盘上显示的标签
  • classvolume(只跟信念单)或 whale(跟所有单)
  • floor信念门槛(美元)。钱包下一笔 ≥ 这个金额才跟进;缺省时 sync_floors.py 自动从历史 p80 算
  • floor_pinfloor 是否钉死(sync_floors.py 不覆盖钉死的值)

建议流程:先用 dashboard.html 挑出几个高 z / 高 OOS z 的 → 加进 copybot.paper.json → 跑一周 paper → 看 portfolio.json 的 equity 曲线 → 表现好的保留进 config.live.json

5.3 改回测窗口

python portfolio.py --days 7        # 7 天滚动窗口
python portfolio.py --days 30       # 默认
python portfolio.py --days 0        # 全历史(极慢,慎用)

backtest.json 里的 "days" 是默认值;CLI 参数优先。

5.4 改信念门槛

python sync_floors.py                # 自动算每钱包 p80,写回 copybot.paper.json
python copybot.py --conviction-from-sharps live/watch_sharps.json  # 用 sharps 表的 avg_bet

或者手改某钱包的 floor 字段(建议同时设 floor_pin: true 防止被自动覆盖)。


6. 完整流程(从零跑通)

6.1 第一次跑(建库)

# 0. 环境
pip install duckdb                 # 本地分析最低依赖
# 实盘才需要:pip install py-clob-client==0.34.6 web3==7.16.0

# 1. 找候选钱包(一次,约 2–5 分钟)
cd live
python enumerate.py 180            # 取过去 180 天最活跃的市场 → top traders → candidates.json

# 2. 拉所有候选钱包的历史(首次 30+ 分钟,断点续传)
python collect.py

# 3. 打分(秒级,全在本地 cache)
python skill.py                    # → watch_skilled.json71 个左右)
python conviction_scan.py          # → conviction_wallets.json
python validate_timing.py          # → watch_sharps.json12 个左右)

# 4. 同步门槛 + 生成仪表盘
python sync_floors.py              # → copybot.paper.json 的 floor 字段
python dashboard.py                # → dashboard.html
python portfolio.py --days 30      # → portfolio.json

# 5. 看结果
start dashboard.html               # WindowsMac 用 `open dashboard.html`
cat portfolio.json | python -m json.tool | head -50

6.2 每日维护

cd live
./daily.sh                         # 一键全自动:发现 → 刷新 → 打分 → 仪表盘 → commit → push → Discord

daily.sh 内部做的事(按顺序):

  1. enumerate.py 14:最近 14 天新市场的 top traders,合并进 candidates.json
  2. cache.invalidate(...) + collect.py:watchlist 钱包强制重拉,新钱包补齐
  3. skill.py5 道门打分(秒级)
  4. conviction_scan.py + validate_timing.py:信念 + 复制可行性
  5. sync_floors.py:把每钱包 p80 写回 bot 配置
  6. portfolio.py:纸盘回测
  7. 校准行:把 paper bot 当前 equity 跟 model 比对,写入 history/calibration.csv
  8. dashboard.py + 快照到 history/
  9. git commit && git push:把 JSON 推到 GitHub
  10. discord_daily.py:推送每日摘要到 Discord

部署建议:cron 或 launchd 每天 10:00 跑一次。

6.3 跑纸盘 bot

cd live
python copybot.py --config copybot.paper.json --poll 60

观察:

  • copybot_live.json:bot 实时写的 feed(仪表盘读这个)
  • copybot_state.json:bot 内部状态(持仓、现金、追踪进度)
  • copybot_fills.jsonl:每笔成交(追加写)

随时看:双击 dashboard.html,里面"Live"那一栏就是 bot 当前的书。

6.4 切到实盘

实盘配置.md 走完整流程:

  1. 拿到私钥(邮箱登录走 https://reveal.magic.link/polymarket
  2. 拿到 funder addresspolymarket.com/settings
  3. 设环境变量(LIVE_PRIVATE_KEY 等)
  4. cp config.live.example.json config.live.json,改 bankroll_usd 为真实余额
  5. 先 dry-run:不传 --live,只设 LIVE_PRIVATE_KEY 让 bot 跑 dry-run 验证下单链路
  6. 正式开火python copybot.py --config config.live.json --live --poll 60
  7. 建议先小金额跑几天(bankroll_usd: 20),验证无误再加大

7. 核心算法一图流

7.1 找钱包(5 道门)

所有钱包 → 1) n ≥ 15 已结算
         → 2) z = (赢  Σp) / √Σp(1p) > 阈值
         → 3) BH-FDR @ 5% (控制假阳性)
         → 4) 时间切两半:z_oos > 0 OOS 验证)
         → 5) 总笔数 ≤ 2500 (剔除做市机器人)
         = watch_skilled.json71 个)

详见 live/skill.py

7.2 找可复制的(信念 + Copy P&L

watch_skilled → 取每钱包自己下注的前 20%(p80 信念门槛)
             → 实时模拟:跟这些单,扣 0.5% 滑点 + 3% taker fee
             → 只留:copy_pnl > 0 且 active in 30d
             = watch_sharps.json12 个)

Copy P&L 是唯一可信的筛选指标——胜率(win%)对"只卖赚钱"的 scalper 会骗你。详见 live/validate_timing.py

7.2.1 什么是"信念"Conviction

信念 = 信号钱包"认真下注"的大单。不是每笔交易都跟,只跟信号钱包自己下注最大的那 20%。

怎么计算

每个钱包的历史交易按下注金额排序,取 p80(第 80 百分位)作为门槛:

假设 Vahan88 过去 90 天有 100 笔交易,按金额排序:

$5, $8, $10, $12, ... $200, $245, $300, $500
                                    ↑
                              p80 = $245(第 80 笔)

下注 < $245 的交易 = 小单(80%-> 不跟
下注 ≥ $245 的交易 = 信念单(20%-> 跟

这就是为什么 Vahan88 的 floor 是 $245 -- 只有它下注 ≥ $245 时 bot 才跟。

为什么这么设计

项目作者发现:大单的胜率远高于小单

Vahan88 全部交易胜率:可能只有 50-60%
Vahan88 信念单(top 20%)胜率:86.2%

钱包下小单时可能是试水、对冲、刷量;下大单时才是"我有信心这个方向"--这就是"信念"。

floor(门槛)怎么来的

sync_floors.pydaily.sh 每天跑)做的事:

  1. 从 cache.duckdb 读每个钱包过去 90 天的交易
  2. 按下注金额排序,算 p80(第 80 百分位)
  3. 写入 copybot.paper.json / config.live.jsonfloor 字段
  4. 每天自动更新(因为钱包的交易模式会变)

示例(当前 8 个钱包的 floor):

钱包 floor 含义
Kruto2027 $80 经常下 $80+ 的单
0xbadaf319 $42 小额玩家,$42 就算信念
1kto1m $332 大额玩家,$332+ 才算信念
Vahan88 $245 中等
LSB1 $315 大额

门槛低的钱包(如 0xbadaf319 的 $42)不是"质量差",而是这个钱包平时下注金额就小,$42 对它来说已经是大单了。门槛高的钱包(如 1kto1m 的 $332)平时下注大,$332 才算它的"信念"。

信念胜率(conv_win

dashboard 里的"信念胜率"是这个钱包信念单的历史胜率

Vahan88 信念胜率 86% = 过去信念单里 86% 赢了
BikesAreTheBikes 信念胜率 21% = 只有 21% 赢了(所以不建议跟)

选钱包时信念胜率比 copy_pnl 更重要--pnl 高可能是一两笔大单运气好,信念胜率高才是稳定赚钱的能力。

新加钱包的 floor

手动加新钱包时 floor 先设 $25(最低门槛),第二天 daily.sh 的 sync_floors.py 会自动算出真实 p80 门槛覆盖掉。

7.3 纸盘回测

信号(watch_sharps 或 backtest.json 里的 wallets
  ↓
每个 in-window 的信念单:
  - stake = bankroll_pct × 当前权益(或 floor 取大)
  - entry_p = signal_p × 1.005+0.5% 滑点)
  - fee = stake × 0.03 × (1p)
  - settle: 跟到 resolution 或跟信号平仓
  - capital 在 res_t 时释放(不是 endDatecache 存了真实结算时间)
  - DD < 20% 时 stake 减半
  - EVENT_CAP > 0 时同事件限笔数
  ↓
portfolio.jsondashboard 直接读)

详见 live/portfolio.py


8. 仪表盘怎么读

打开 live/dashboard.html顶部 5 个卡片给出池子总览(z 中位数、OOS z 中位数、各类型数量),表格列出每个通过 5 道门的钱包。

挑钱包的硬指标(按重要性):

  1. OOS z > 0(必须):前半后半都赢
  2. z ≥ 5(强烈推荐):显著超过市场
  3. alpha 0.20.4 高:在长镜头冷门区有 edge(不是骑热门)
  4. type = Value(推荐):真正可复制的 alpha 区
  5. 总笔数 ≥ 30:样本足够

避坑:

  • 高 z 但 OOS z 负 = 运气
  • 高胜率但 avg entry > 0.85 = Favorite-rider,赔率薄、深度差,复利赚不到
  • 总笔数 < 15 = 样本不足

详细字段含义见 live/仪表盘说明.md


9. 故障排查

症状 原因 / 解决
portfolio.pyOverflowError: mktime argument out of range Polymarket 某些市场的 endDate 是 0001-01-01 这种 sentinel,超出 mktime 范围。已修过:live/portfolio.py:336 同时捕 ValueErrorOverflowError
urllib 直连超时 国内被墙。本机设 $env:HTTPS_PROXY = "http://127.0.0.1:7890";云服务器直连没问题(已测)。
daily.sh 跑完但 portfolio.json 不更新 多半是 collect.py 还在拉(首次很慢)。等下一次或手动跑。
dashboard.html 不显示某些钱包 skill.py 的 5 道门把它们刷掉了。改 skill.py 顶部的阈值(min_resolved、z 阈值等)。
sync_floors.py 把我的 floor 改了 是因为没设 floor_pin: true。钉死的字段不会被覆盖。
preflight_live.py 报 INVALID_SIGNATURE 私钥错了。邮箱登录走 https://reveal.magic.link/polymarket 重导。
preflight_live.py 报 Invalid Funder Address funder_address 错了。打开 polymarket.com/settings 看你的 Polygon profile address。
paper bot 跑了但 copybot_live.json 没更新 检查磁盘权限;或 bot 启动时报错(看 stderr)。

10. 进阶

10.1 跑更宽的回测

wide/ 里有冻结的 subgraph 扫描器,能挖 2024 之前的历史。如果你换了一批钱包想看更久:

cd wide
python ingest.py --subgraph ...
python score.py --min-bets 30

(参考 wide/README.md,这是历史归档,新研究都在 live/

10.2 改入场价上限

live/portfolio.py 顶部:

MAX_ENTRY = float(os.environ.get("MAX_ENTRY", 0.95))

或 CLI

MAX_ENTRY=0.85 python portfolio.py --days 30

copybot.paper.jsonfollow.max_entry 同理。两者保持一致。

10.3 加新钱包

# 1. 把钱包加进 candidates
python -c "import json,os; c=set(json.load(open('candidates.json'))); c.add('0xNEW...'); json.dump(sorted(c), open('candidates.json','w'))"

# 2. 拉它的历史
python -c "import cache; cache.invalidate(['0xNEW...'])"
python collect.py
# 或单拉:
python -c "import cache; cache.get_bets('0xNEW...')"

# 3. 重新打分
python skill.py
python validate_timing.py

# 4. 看仪表盘,决定要不要加进 follow set
python dashboard.py

11. 一句话总结

  • :用 live/skill.py 找 71 个有 edge 的,live/validate_timing.py 留 12 个可复制的
  • :用 live/portfolio.py 跑纸盘回测,结果看 live/portfolio.jsonlive/dashboard.html
  • :用 python copybot.py --config live/copybot.paper.json --poll 60 跑 paper
  • cp config.live.example.json config.live.json + 设 env + 加 --live

每天 ./daily.sh 一次维护。