Files
group_xinghuo_jinrong/docs/项目框架设计/C-05-行情数据源选型对比.md
T

159 lines
7.9 KiB
Markdown
Raw Normal View History

# C-05 行情 / 净值数据源选型对比
> 场景 ID:**C-05**(客户查产品净值 · 「这只基金现在净值多少」)
> 用途:答辩 / 发群 / Phase B 外部同步拍板
> 关联:[接口契约-代销平台API-v0.1.md](./接口契约-代销平台API-v0.1.md) · [接口契约-代销平台API-v0.2-行情扩展草案.md](./接口契约-代销平台API-v0.2-行情扩展草案.md) · [Core模拟底座/01-表结构与种子说明.md](./Core模拟底座/01-表结构与种子说明.md) · [需求拆解/用户故事/平台与行业背景.md](../需求拆解/用户故事/平台与行业背景.md)
---
## 1. 需求边界(本项目)
| 要 | 不要 |
| --- | --- |
| 代销 **场外公募/理财** 产品 **最新净值 + 日涨跌 + 净值日期** | 股票 **实时 tick / 分时 / K 线** |
| 数据进 **Core L0**(`core_product_nav`)→ Platform API → 前端/Agent | 前端/Agent **直连** 第三方行情 REST |
| 开发 Demo:**静态种子** 即可 | 毫秒级行情、自选股、全市场看盘终端 |
| 合规叙事:**持牌代销平台** 自有产品货架 | 爬虫蚂蚁/天天基金/雪球内部接口 |
PRD / 风控 PRD 已明确:**不做**真实 TA/清算/毫秒级行情。
---
## 2. 一句话结论
> **国内头部互联网代销(蚂蚁、天天基金等)没有面向第三方的官方「看盘 API」。**
> **本项目 P0 用 Core 模拟库;Phase B 可选付费 REST 数据商做 T+1 同步进 Core;生产级走 Wind/Choice/iFinD 或 TA/登记披露对账。**
---
## 3. 数据源对比总表
| 类别 | 代表 | 能否用于 C-05 净值 | 本项目阶段 | 合规/稳定 | 备注 |
| --- | --- | --- | --- | --- | --- |
| **Core 模拟种子** | `scripts/core/06-seed-nav.sql` | ✅ 完全匹配 | **P0 · 当前** | ✅ | `GET /api/products/{id}/nav` 已实现 |
| **互联网代销开放 API** | 蚂蚁开放平台、天天基金、雪球 | ❌ 无官方通用净值 API | **禁止** | ❌ | 内部 JS/爬虫非授权 |
| **页面爬虫 / 逆向** | fundgz、pysnowball | ⚠️ 能抓到但不稳定 | **禁止** | ❌ | 与持牌平台叙事冲突 |
| **第三方 REST 数据 API** | 咕咕数据、iTick、次方量化 | ✅ 场外基金净值 | **Phase B PoC** | 🟡 需合同+字段核对 | 经 `sync_market_nav` 落 Core |
| **金融终端数据商** | Wind、Choice、同花顺 iFinD | ✅ 全品种+历史 | **生产方案** | ✅ 机构签约 | Demo 阶段不必签 |
| **券商 OpenAPI** | 富途、长桥、华盛 | 🟡 偏场内/港美 | **不适用** | ✅ 开户即用 | 与场外公募代销主场景不对题 |
| **券商 QMT/PTrade** | 国内券商 | 🟡 本地 Python | **不适用** | ✅ 门槛高 | 量化交易,非净值展示 |
| **交易所 / 基金通 B2B** | 上证基金通 snapshot | 🟡 场内 ETF/LOF | **未来扩展** | ✅ 需机构接入 | 与当前 14 只种子产品不同线 |
| **登记中心 / TA 披露** | 理财登记、基金公司 TA | ✅ 权威净值来源 | **生产对账** | ✅ 批量日终 | 非实时 REST,文件/专线 |
图例:**✅ 推荐** · **🟡 有条件** · **❌ 不推荐/禁止**
---
## 4. 禁止清单(团队硬规则)
以下 **不得** 进入 `scripts/sync/` 或生产代码:
1. 天天基金 `fundgz.1234567.com.cn` 等非官方内部 URL
2. 雪球 Cookie / Token 逆向(pysnowball 等)
3. 任何 **未签约** 的页面 scraping
4. 前端或 Agent Tool **携带第三方 appkey 直连** 外网行情
5. 将外部 API 响应 **伪造为实时 tick** 展示(监管与产品口径不允许)
---
## 5. 分阶段推荐路径
| 阶段 | 数据源 | 接入方式 | 对外 API |
| --- | --- | --- | --- |
| **P0 开发/Demo** | Core 种子 | `reset.ps1` + `06-seed-nav.sql` | `GET /api/products`、`/nav` |
| **P0 前端** | 同上 | `web/` 产品行情页真调平台 API | 页眉:**静态模拟净值** |
| **Phase B 验证** | 咕咕 / iTick / 次方 等 **择一 PoC** | `scripts/sync/sync_market_nav.py` → UPSERT `core_product_nav` | 新增 `GET /api/products/nav-snapshot`(见 v0.2 草案) |
| **生产** | Wind / Choice / iFinD + TA 披露 | 日终批处理 + 对账 | 同上;`quote_mode=external_t1` |
| **Phase C(可选)** | 历史净值 / 场内 ETF 实时 | 历史表或交易所 B2B | `GET .../nav/history` 等待定 |
---
## 6. Phase B PoC 第三方 REST 细对比(候选,非背书)
> 以下为 **调研摘要**,签约前须自行核对最新文档、价格与授权范围。
| 维度 | 咕咕数据(示例) | iTick(示例) | 次方量化(示例) |
| --- | --- | --- | --- |
| **典型能力** | 公募基金净值 REST | 场内 ETF/LOF 报价 | 场内基金 spot |
| **与 C-05 匹配度** | 高(场外净值) | 中(偏场内) | 中 |
| **接入成本** | appkey + 按量 | API key | x-api-key |
| **入库方式** | sync 脚本 | sync 脚本 | sync 脚本 |
| **Demo 推荐度** | **优先试** | 有场内产品时试 | 备选 |
**PoC 验收标准(4 条):**
1. 能映射到种子库 `PROD-*`(或配置 `MARKET_NAV_PRODUCT_MAP`)
2. 返回含 `nav` + `nav_date`(或等价字段)
3. 日终 T+1 延迟可接受(页眉标明,不冒充实时)
4. 商业授权允许 **入库再展示**
---
## 7. 生产级数据商(文档/答辩用)
| 服务商 | 典型用途 | 门槛 |
| --- | --- | --- |
| **Wind Client API** | 全市场历史+实时 | 机构付费终端 |
| **东方财富 Choice EMQuantAPI** | 基金净值、基本面 | 机构试用/付费 |
| **同花顺 iFinD QuantAPI** | 多资产 REST/SDK | 机构账号 |
**与第三方小 REST 的分工:**
- PoC:**小 REST** 验证 sync 管道与 UI
- 生产:**数据商** 替换 adapter 实现,**Platform API 路径不变**
---
## 8. 架构对齐(为什么不是「接代销 App API」)
```text
┌─────────────────────────────────────────────────────────┐
│ XX 科技持牌代销平台(本项目) │
│ 卖的是自有货架 core_product · 净值权威在 core_product_nav │
└───────────────────────────┬─────────────────────────────┘
│
P0: 种子 SQL │ Phase B+: sync_market_nav
▼
jinrong_core.core_product_nav
│
▼
GET /api/products/nav-snapshot
│
┌─────────────┴─────────────┐
▼ ▼
web 产品行情页 Agent / 其他 Agent
```
**行业常态:** 代销平台 **采购** 数据或接 **TA/登记披露**,而不是调用竞品 App 的接口。
---
## 9. 与场景 / 矩阵映射
| 场景 | 数据需求 | 当前状态 | 数据源 |
| --- | --- | --- | --- |
| **C-05** | 最新净值 | API v0.1 已有;Agent T-40 未做 | Core 种子 |
| **C-01** | 持仓市值 | `core_holding.market_value` 种子 | Core(非实时重算) |
| 前端「产品行情」 | 全产品净值表 | P0 设计已定 | Platform API |
| R-02 / 适当性 | 产品 R 等级 | Core | 与净值源独立 |
---
## 10. 决策记录(建议拍板)
| # | 决策 | 建议 |
| --- | --- | --- |
| 1 | P0 是否接外部 API | **否**,Core 种子 + 静态页眉 |
| 2 | Phase B 是否做 sync | **是**,选一个 REST PoC + `sync_market_nav.py` |
| 3 | 是否做实时看盘 | **否**(Phase C 再评估场内 ETF) |
| 4 | 生产数据商 | 文档登记 Wind/Choice/iFinD,实施时再签 |
| 5 | 禁止爬虫 | **是**,写入开发规范 |
---
## 11. 修订记录
| 日期 | 说明 |
| --- | --- |
| 2026-09-09 | 首版:互联网代销/API 调研结论 + 分阶段选型 + Phase B PoC 对比 |