DraftCode 来自 AWS Summit Shanghai 2026「模拟球探」24h 黑客松。系统为 30 支球队配置选人偏好,通过 1,500 次蒙特卡洛模拟,生成顺位预测及对应概率。
模型综合球员体测与能力数据、多家媒体的 mock draft 和赔率隐含概率,在信号分歧较大时调用 gpt-5.5 分析。预测结果按比赛各顺位的期望得分优化。
输出包括 30 顺位与 7 道里程碑题的答题卡、预测解释、运行记录,以及 AWS SAM 部署定义。
数据流 · Mermaid 可编辑版
flowchart TD
T["🧬 天赋信号<br/>手册速率指标 / 体测"]:::sig
E["📋 专家信号<br/>多源 mock 共识"]:::sig
M["💰 资金信号<br/>赔率 de-vig 隐含概率"]:::sig
T & E & M --> F{"三信号融合 + 两轴背离<br/>gpt-5.5 在分歧处破平局"}
F --> P["30 GM 偏好函数<br/>w·(天赋+需求+人格+专家+资金)"]
P --> MC["蒙特卡洛 ×1500<br/>顶部顺位锚定去水赔率"]
MC --> B["🎯 匈牙利指派<br/>30 顺位 + 边际概率(置信度)"]
MC --> Q["📐 7 里程碑<br/>与最终板自洽"]
B & Q --> A["📋 答题卡 answer_card.xlsx"]
B & Q --> AU["🔍 审计追踪 audit.json/md"]
classDef sig fill:#141c30,stroke:#f4a93b,color:#eef2fb;
| 特点 | 实现 |
|---|---|
| 三类信号融合 | 综合球员数据、专家排名和赔率,分别检测天赋与市场、专家与赔率之间的差异。 |
| 球队选人偏好 | 按顺位、阵容需求、偏好和时间线,为 30 支球队配置 GM Agent。 |
| 蒙特卡洛模拟 | 运行 1,500 次模拟,统计顺位分布,并计算 7 道里程碑题的结果。 |
| 情报更新 | 引入新闻与赔率变化,更新选秀顺序和球队需求后重跑预测。 |
| 红队检查与运行记录 | 检查预测分歧,保存输入数据、模型解释和信号来源。 |
模型调用与模拟分开执行:先用 gpt-5.5 构建球队偏好、分析信号分歧,再由蒙特卡洛引擎复用这些结果,避免每次模拟都调用模型。
赔率 de-vig:把公开赔率转换为隐含概率,再按同一顺位归一化,作为选秀预测的输入。
美式赔率 → 隐含概率: -X → X/(X+100) | +X → 100/(X+100)
去水 de-vig (比例法): p_i = q_i / Σq_j (同一顺位市场, 消抽水使 Σp = 1)
跨书共识: 多书同一(顺位, 球员)取均值, 按顺位归一
三处接入引擎:
- 偏好叠加
w_money · odds_signal - 蒙特卡洛顶部置信度锚定市场
(1-λ)·softmax + λ·odds(λ 随顺位衰减) - 轴② 背离(专家 mock vs 资金 odds)
|gap| ≥ 8触发 gpt-5.5 裁决
ESPN 与 OddsShark 的比赛数据快照中,顶部专家排名与赔率接近,未触发专家与赔率的分歧分析。缺少赔率输入时,系统使用球员数据与专家预测。
make install # 安装 (uv, 零第三方核心依赖)
make test # 75 tests
make simulate # 蒙特卡洛 Draft Twin (样例数据)完整选秀预测流程(真实 2026 数据,需 gpt-5.5 网关)
# 设置 gpt-5.5 网关 (本地 Codex 反代, 或远程 EC2 网关)
export DRAFTCODE_LLM_BASE_URL=http://<gateway>:8787 DRAFTCODE_LLM_API_KEY=<key>
draftcode ingest --source data/raw/official --out data/processed --divergence-llm # ① 官方 107 参选人 + 轴① 背离
draftcode intel --news-text "<交易新闻>" --apply # ② 实时情报换签
draftcode market --mock-file CBS=… --mock-file SI=… --apply # ③ 专家共识 (mock)
draftcode odds --odds-file ESPN=… --odds-file OS=… --apply # ④ 资金信号 (赔率 de-vig) + 轴② 背离
draftcode warroom --data-dir data/processed --output-dir outputs/llm # ⑤ 30 GM 偏好 (gpt-5.5)
draftcode simulate --data-dir data/processed --output outputs/twin.json --draws 1500 # ⑥ 蒙特卡洛 + 赔率锚
draftcode answer --data-dir data/processed --out outputs/answer_card.xlsx # ⑦ 答题卡
draftcode audit # ⑧ 合并预测+解释+背离+GM+红队 → 证据档在浏览器中打开 web/draft_room.html 查看作战室。页面依次展示球员数据、市场信号、融合结果和终榜;加上 ?demo=1 可自动演示。
以下为比赛期间的预测节选,完整 30 顺位见 outputs/answer_card.xlsx。
|
7 道里程碑题
|
| Agent | 命令 | 职责 | 产物 |
|---|---|---|---|
| 官方归一化 | ingest |
107 参选人 + 体测/手册 + 轴① 背离 (gpt-5.5) | prospects.csv |
| 实时情报 | intel |
根据新闻更新持签球队和阵容需求 | draft_order.csv |
| 专家市场 | market |
多源 mock → 共识 (中英文名匹配) | mock_signals.csv |
| 资金赔率 | odds |
赔率 → de-vig 隐含概率 + 轴② 背离 | odds_signals.csv |
| 30 GM 作战室 | warroom |
30 队人格偏好 + 解释 + 红队 (LLM-once) | outputs/llm/*.json |
| 蒙特卡洛孪生 | simulate |
1500 次采样 + 赔率锚 + 匈牙利指派 | twin.json |
| 答题卡 / 审计 | answer / audit |
提交卡 + 可复现证据档 | answer_card.xlsx · audit.md |
外部内容由抓取工具或人工导入;引擎处理结构化数据并保存运行记录。
infra/template.yaml 用 AWS SAM 定义采集、存储、并行模拟和结果查询所需的资源。
架构映射 / Scenario Swarm / 部署命令
| 层 | 服务 |
|---|---|
| 采集(容器) | EventBridge + Fargate(headless 爬虫,含赔率)+ ECR |
| 存储 | S3 (KMS) · DynamoDB 台账 (KMS) |
| 编排 / 模拟 | Step Functions Distributed Map(1000+ 蒙特卡洛并行) |
| 计算 | Lambda 容器镜像 |
| 输出 | API Gateway + Lambda |
| 安全 | KMS CMK · Secrets Manager · 最小权限 IAM · Bedrock Guardrails(条件) |
| IaC | AWS SAM (infra/template.yaml,sam validate --lint 通过) |
Scenario Swarm(Distributed Map 并行蒙特卡洛):
PrepareRun → N 个分片 payload → Distributed Map (action=simulate_shard)
→ 各分片写 runs/<run_id>/shards/<i>.json → Aggregate 合并 → twin.json + DynamoDB
每分片独立随机流 seed + shard_index * 1000003;单分片(index 0)与本地 run() 逐字节等价。
部署:
make sam-deploy STACK_NAME=draftcode AWS_REGION=us-east-1 DATA_S3_PREFIX=processed
make upload-data S3_BUCKET=<bucket> DATA_S3_PREFIX=processed
aws stepfunctions start-execution --state-machine-arn <PredictionWorkflowArn> --region us-east-1- 语言 / 工具:
Python 3.11·uv·Typer/RichCLI - 依赖:核心引擎零第三方依赖(
openpyxl仅在 official / answer 层) - LLM:
gpt-5.5,通过 OpenAI 兼容网关调用 - 算法:赔率 de-vig · softmax 温度采样 · 蒙特卡洛 · 匈牙利指派 · 置信度加权融合
展开
src/draftcode/
official.py 官方数据归一化 + 轴① 背离 odds.py 赔率聚合 Agent (de-vig)
intel.py 实时情报 Agent market.py 专家共识 Agent
divergence.py gpt-5.5 两轴背离裁决 preference.py 三信号偏好函数
simulate.py 蒙特卡洛 Draft Twin (+赔率锚) warroom.py 30 GM 编排
answer.py 答题卡 writer audit.py 可审计追踪合并器
llm_client.py gpt-5.5 客户端 cli.py 命令行入口
infra/template.yaml AWS SAM 蓝图
web/draft_room.html 六幕渐进式作战室前端 (自包含单文件, ?demo=1 演示)
scripts/build_frontend.py 前端数据生成器 (twin + audit → 刷新数据块)
design.md · spec.md 前端设计稿 / 技术规格
docs/architecture.{png,svg} 系统架构图
docs/ 架构 / 创新策略 / AWS 计分 / Agent 设计
- 球员池按官方 107 人参选名单建立。
- 新闻、专家预测和赔率按各自的数据快照记录。
- 模拟概率反映当前输入与假设下的选人分布。
- 模型输出可能随运行变化,复现比赛提交时请使用当次缓存与数据快照。
