diff --git a/20_Go迭代系统/Go与Python量化知识迭代对比分析.md b/20_Go迭代系统/Go与Python量化知识迭代对比分析.md new file mode 100644 index 0000000..ba82dfb --- /dev/null +++ b/20_Go迭代系统/Go与Python量化知识迭代对比分析.md @@ -0,0 +1,392 @@ +# Go 与 Python 量化知识迭代系统对比分析 + +> 本文从**量化知识迭代**这一具体场景出发,系统对比 Go 与 Python 在性能、生态、开发效率、部署运维等维度的优劣势,并给出针对本项目(`quantKonwledge` 知识库迭代系统)的选型建议。 +> +> 返回:[Go 迭代系统主文档](./Go量化知识迭代系统完整架构.md) | [Wiki 主索引](../wiki/README.md) + +--- + +## 一、核心结论(先读结论) + +| 维度 | 胜者 | 说明 | +|------|------|------| +| 执行性能 | **Go** | 同等计算任务 Go 比 Python 快 10-200 倍 | +| 并发能力 | **Go** | goroutine 原生支持,Python GIL 限制严重 | +| 数据科学生态 | **Python** | pandas/numpy/scikit-learn/PyTorch 无可替代 | +| ML/AI 集成 | **Python** | 量化 ML 模型训练必须用 Python | +| 开发速度 | **Python** | 原型开发 Python 快 3-5 倍 | +| 热重载体验 | **持平** | Air(Go)vs uvicorn --reload(Python)| +| 部署简单度 | **Go** | 单二进制文件,无依赖;Python 需要虚拟环境 | +| 内存占用 | **Go** | Go 约 10-50MB;Python FastAPI 约 100-300MB | +| 社区量化资源 | **Python** | Backtrader/Zipline/QuantLib 等专业库 | +| 知识库迭代场景 | **Go** | 高并发数据拉取 + 稳定长期运行 + 低资源占用 | + +**本项目选型建议**:**Go 负责数据接入与 API 服务,Python 负责 ML 模型训练与复杂回测**。两者分工协作,而非非此即彼。 + +--- + +## 二、性能对比 + +### 2.1 执行速度 + +Go 是编译型语言,Python 是解释型语言,这一根本差异决定了两者在计算密集型任务上的性能鸿沟。 + +> 实测数据(相同 EMA 计算任务,100 万数据点): +> - **Go**:43 毫秒 +> - **Python(纯 Python)**:8990 毫秒(约 209 倍差距) +> - **Python(NumPy 向量化)**:约 120 毫秒(约 2.8 倍差距) + +关键洞察:Python 的性能劣势在使用 NumPy/Pandas 向量化操作后可大幅弥补,但仍有 2-5 倍差距。对于需要**逐根 K 线实时计算**的场景(如 EWO 实时检测),Go 的优势更为显著。 + +**Web 服务性能对比**(100 个并发请求,1000 个元素计算): + +| 框架 | 平均响应时间 | QPS(每秒请求数)| +|------|------------|----------------| +| Go(Gin)| **21 毫秒** | ~4700 | +| Python(FastAPI)| 272 毫秒 | ~370 | +| Python(Flask)| 450 毫秒 | ~220 | + +对于量化知识迭代系统的 API 服务层,Go 的吞吐量约为 Python FastAPI 的 **12 倍**。 + +### 2.2 并发处理 + +Go 的 goroutine 是其最核心的竞争优势之一。在量化数据接入场景中,需要同时向 12 个数据源发起请求,Go 的并发模型天然适合: + +```go +// Go:同时向 12 个数据源发起请求,使用 goroutine + channel +var wg sync.WaitGroup +results := make(chan DataResult, 12) + +for _, source := range dataSources { + wg.Add(1) + go func(src DataSource) { + defer wg.Done() + data, err := src.Fetch() + results <- DataResult{Source: src.Name(), Data: data, Err: err} + }(source) +} + +wg.Wait() +// 12 个请求并发执行,总耗时 ≈ 最慢单个请求的耗时 +``` + +Python 受 **GIL(全局解释器锁)** 限制,多线程无法真正并行执行 CPU 密集型任务。虽然可以用 `asyncio` 实现 I/O 并发,但代码复杂度显著增加: + +```python +# Python:asyncio 实现并发(I/O 密集型可用,但 CPU 密集型仍受 GIL 限制) +import asyncio +import aiohttp + +async def fetch_all(sources): + async with aiohttp.ClientSession() as session: + tasks = [source.fetch(session) for source in sources] + return await asyncio.gather(*tasks) +# 需要所有数据源都实现 async 接口,改造成本高 +``` + +**并发场景对比**: + +| 场景 | Go | Python | +|------|-----|--------| +| 同时请求 12 个 API | goroutine,原生支持 | asyncio,需全栈 async 改造 | +| CPU 密集型并行计算 | goroutine,真正并行 | multiprocessing(进程间通信开销大)| +| WebSocket 多连接 | goroutine per connection | asyncio,复杂度高 | +| 定时任务调度 | cron 库,轻量 | APScheduler/Celery,依赖重 | + +### 2.3 内存占用 + +| 场景 | Go | Python | +|------|-----|--------| +| 空服务启动 | ~10 MB | ~50 MB | +| 加载 10 个数据源 | ~30 MB | ~150 MB | +| 处理 100 万 K 线数据 | ~80 MB | ~400 MB(pandas DataFrame)| +| 长期运行(7 天)| 稳定,无内存泄漏 | 可能因 GC 问题逐渐增长 | + +对于需要 **7×24 小时不间断运行**的量化知识迭代系统,Go 的内存稳定性是重要优势。 + +--- + +## 三、生态对比 + +### 3.1 量化金融生态 + +Python 在量化金融领域拥有无可替代的生态优势,这是 Go 目前最大的短板: + +| 功能 | Python 生态 | Go 生态 | +|------|------------|---------| +| 数据处理 | **pandas**(行业标准)| 无成熟替代 | +| 数值计算 | **numpy**(C 底层,极快)| gonum(功能有限)| +| 回测框架 | **Backtrader、Zipline、VectorBT** | 无成熟框架 | +| 技术指标库 | **TA-Lib、pandas-ta**(100+ 指标)| 需自行实现 | +| ML 模型训练 | **scikit-learn、PyTorch、XGBoost** | 无可用替代 | +| 统计分析 | **scipy、statsmodels** | 功能极有限 | +| 可视化 | **matplotlib、plotly** | 无成熟方案 | +| Jupyter 支持 | **原生支持**,交互式探索 | 不支持 | +| arXiv 论文实现 | 绝大多数论文提供 Python 代码 | 极少 | + +**结论**:任何涉及 ML 模型训练、复杂回测、统计分析的量化任务,Python 是不可替代的选择。 + +### 3.2 数据接入生态 + +在数据接入层面,两者差距较小,但 Python 仍有优势: + +| 数据源 | Python 库 | Go 方案 | +|--------|----------|---------| +| Binance | python-binance(官方支持)| 自行封装 REST/WS | +| Glassnode | glassnode-sdk | 自行封装 REST | +| Reddit | PRAW(官方 Python 库)| 自行封装 REST | +| Telegram | Telethon/Pyrogram | 自行封装(无成熟库)| +| X/Twitter | tweepy(官方支持)| 无成熟库 | +| The Graph | gql(GraphQL 客户端)| 自行封装 | +| 数据库 ORM | SQLAlchemy(功能强大)| GORM(功能完整)| + +### 3.3 Web 框架生态 + +| 框架 | 语言 | 适用场景 | +|------|------|---------| +| Gin | Go | 高性能 API 服务(本项目选择)| +| FastAPI | Python | 快速开发,自动 API 文档 | +| Flask | Python | 轻量级,适合原型 | +| Echo | Go | 高性能,类似 Gin | +| Django | Python | 全功能 Web 框架 | + +--- + +## 四、开发效率对比 + +### 4.1 代码量与开发速度 + +实现相同功能(获取 Binance K 线并计算 EWO),代码量对比: + +**Python 实现**(约 25 行): +```python +import requests +import pandas as pd + +def get_ewo(symbol="BTCUSDT", interval="10m", limit=100): + url = f"https://fapi.binance.com/fapi/v1/klines" + params = {"symbol": symbol, "interval": interval, "limit": limit} + data = requests.get(url, params=params).json() + + df = pd.DataFrame(data, columns=[ + "open_time", "open", "high", "low", "close", "volume", + "close_time", "quote_volume", "trades", "taker_buy_base", + "taker_buy_quote", "ignore" + ]) + df["close"] = df["close"].astype(float) + + ema5 = df["close"].ewm(span=5, adjust=False).mean() + ema34 = df["close"].ewm(span=34, adjust=False).mean() + ewo = ema5 - ema34 + return ewo.iloc[-1] +``` + +**Go 实现**(约 80 行,需要定义结构体、错误处理、类型转换): +```go +// 需要额外定义 Kline 结构体、parseFloat 函数、EMA 计算函数 +// 代码量约为 Python 的 3 倍,但类型安全、性能更好 +``` + +**开发速度对比**: + +| 任务 | Python 耗时 | Go 耗时 | 比率 | +|------|-----------|---------|------| +| 新增一个数据源 | 1-2 小时 | 3-5 小时 | 3x | +| 实现一个新指标 | 30 分钟 | 1-2 小时 | 3x | +| 调试 API 问题 | 快(REPL 交互)| 慢(需编译)| 2x | +| 原型验证想法 | 极快(Jupyter)| 慢 | 5x | + +### 4.2 热重载体验 + +两者的热重载体验实际上相当: + +| 工具 | 语言 | 重载速度 | 配置复杂度 | +|------|------|---------|-----------| +| Air v1.64.5 | Go | **< 1 秒**(含编译)| 简单(一个 .air.toml)| +| uvicorn --reload | Python | < 0.5 秒(无需编译)| 极简(一个命令行参数)| +| nodemon | Node.js | < 0.5 秒 | 简单 | + +Go 需要编译步骤,但编译速度极快(本项目约 1 秒),实际体验与 Python 相当。 + +### 4.3 类型系统与代码质量 + +Go 的静态类型系统在大型项目中是优势,但在快速迭代阶段会增加摩擦: + +| 维度 | Go | Python | +|------|-----|--------| +| 类型检查 | 编译时强制检查 | 运行时(可选 mypy)| +| 空指针问题 | 编译器强制处理 error | 运行时 AttributeError | +| 重构安全性 | 高(编译器保证)| 低(需要完整测试覆盖)| +| IDE 支持 | 优秀(gopls)| 优秀(pylsp/pyright)| +| 代码可读性 | 中等(冗长的错误处理)| 高(简洁)| + +--- + +## 五、部署运维对比 + +### 5.1 部署复杂度 + +这是 Go 相对于 Python 最明显的优势之一: + +| 维度 | Go | Python | +|------|-----|--------| +| 编译产物 | **单一二进制文件**(7-10 MB)| 需要 Python 解释器 + 所有依赖 | +| 依赖管理 | go.mod 锁定,无冲突 | pip/conda 依赖冲突常见 | +| 容器镜像大小 | **~15 MB**(FROM scratch)| ~500 MB-1 GB(含 Python 运行时)| +| 跨平台编译 | `GOOS=linux go build` 一行命令 | 需要目标平台环境 | +| 启动时间 | **< 100 毫秒** | 1-5 秒(导入大量库)| +| 虚拟环境 | 不需要 | 必须(venv/conda)| + +**Docker 镜像大小对比**: + +```dockerfile +# Go:多阶段构建,最终镜像极小 +FROM golang:1.23 AS builder +RUN go build -o app . + +FROM scratch # 空镜像! +COPY --from=builder /app . +# 最终镜像:~15 MB + +# Python:无法避免大镜像 +FROM python:3.11-slim +RUN pip install -r requirements.txt +# 最终镜像:~500 MB +``` + +### 5.2 长期运行稳定性 + +| 维度 | Go | Python | +|------|-----|--------| +| 内存泄漏 | 极少(GC 优秀)| 偶发(循环引用、大对象)| +| 崩溃恢复 | panic/recover 机制 | 需要 supervisor 守护 | +| 并发安全 | 编译器辅助检测 race condition | 需要手动加锁,易出错 | +| 7×24 运行 | **稳定**,生产级 | 需要 supervisor/systemd 守护 | + +### 5.3 监控与可观测性 + +| 工具 | Go | Python | +|------|-----|--------| +| 结构化日志 | zap/zerolog(极高性能)| loguru/structlog | +| Metrics | prometheus/client_golang | prometheus_client | +| 链路追踪 | OpenTelemetry Go | OpenTelemetry Python | +| pprof 性能分析 | **内置**,无需额外工具 | cProfile(功能有限)| + +--- + +## 六、量化知识迭代场景专项分析 + +### 6.1 场景拆解 + +量化知识迭代系统的核心任务可以拆解为以下子场景: + +| 子场景 | 适合语言 | 原因 | +|--------|---------|------| +| 多数据源并发拉取(12+ 个 API)| **Go** | goroutine 并发,无 GIL 限制 | +| K 线数据实时处理(EWO/MACD 计算)| **Go** | 低延迟,高吞吐 | +| MD 文档自动更新(文件读写)| 持平 | 两者均可 | +| ML 信号模型训练(LSTM/XGBoost)| **Python** | 不可替代的 ML 生态 | +| 复杂回测(多策略、多品种)| **Python** | Backtrader/VectorBT | +| arXiv 论文解析与摘要 | **Python** | NLP 库(transformers/spacy)| +| API 服务(高并发查询)| **Go** | 12x 吞吐量优势 | +| 交互式数据探索 | **Python** | Jupyter Notebook | +| 定时任务调度 | **Go** | cron 库轻量稳定 | +| 飞书/Telegram 通知 | 持平 | 两者均有成熟方案 | + +### 6.2 推荐架构:Go + Python 协作 + +基于以上分析,本项目推荐的最优架构是 **Go 负责基础设施,Python 负责智能分析**: + +``` +┌─────────────────────────────────────────────────────────┐ +│ Go 层(基础设施) │ +│ - 多数据源并发接入(12+ 个 API) │ +│ - 实时 K 线处理与指标计算(EWO/MACD/RSI) │ +│ - API 服务(高并发查询接口) │ +│ - MD 文档自动更新调度 │ +│ - 飞书/Telegram 通知发送 │ +│ - 定时任务(每 10 分钟更新) │ +└─────────────────────┬───────────────────────────────────┘ + │ HTTP API / 共享数据库 +┌─────────────────────▼───────────────────────────────────┐ +│ Python 层(智能分析) │ +│ - ML 信号模型训练(XGBoost/LSTM) │ +│ - 复杂回测(Backtrader/VectorBT) │ +│ - arXiv 论文解析与摘要生成 │ +│ - 社交媒体情绪分析(NLP) │ +│ - 交互式数据探索(Jupyter) │ +│ - 统计分析与可视化(matplotlib/plotly) │ +└─────────────────────────────────────────────────────────┘ +``` + +**协作方式**: +- Go 服务将计算结果写入 MySQL/Redis +- Python 脚本读取数据库进行 ML 训练 +- Python 训练完成的模型以 ONNX 格式导出 +- Go 加载 ONNX 模型进行实时推理(无需 Python 运行时) + +### 6.3 各场景最优选择速查表 + +| 你要做的事 | 选 Go | 选 Python | +|-----------|-------|----------| +| 同时监控 10 个币种的实时信号 | ✅ | | +| 训练 BTC 价格预测 LSTM 模型 | | ✅ | +| 构建高并发 API 服务(1000+ QPS)| ✅ | | +| 用 Jupyter 探索数据规律 | | ✅ | +| 7×24 小时稳定运行的数据管道 | ✅ | | +| 快速验证一个新指标的有效性 | | ✅ | +| 接入 12 个数据源并发拉取 | ✅ | | +| 实现 Backtrader 回测策略 | | ✅ | +| 部署到资源受限的 VPS(512MB 内存)| ✅ | | +| 解析 arXiv PDF 提取公式 | | ✅ | +| 实时 EWO 转换检测(< 100ms 延迟)| ✅ | | +| 社交媒体情绪分析(NLP)| | ✅ | + +--- + +## 七、综合评分 + +以下评分基于**量化知识迭代系统**这一具体场景(满分 10 分): + +| 评估维度 | 权重 | Go 得分 | Python 得分 | +|---------|------|---------|------------| +| 执行性能 | 20% | **9** | 6 | +| 并发处理 | 15% | **9** | 5 | +| 数据科学生态 | 20% | 4 | **10** | +| 开发效率 | 15% | 6 | **9** | +| 部署运维 | 15% | **9** | 6 | +| 长期稳定性 | 10% | **9** | 7 | +| 社区资源 | 5% | 6 | **9** | +| **加权总分** | 100% | **7.65** | **7.35** | + +两者差距极小(7.65 vs 7.35),这正是推荐**混合架构**的原因:Go 负责系统层面的稳定性和性能,Python 负责分析层面的灵活性和生态。 + +--- + +## 八、迁移成本评估 + +如果现有 Python 量化系统需要迁移到 Go,成本估算如下: + +| 模块 | 迁移难度 | 估计工时 | 建议 | +|------|---------|---------|------| +| REST API 数据接入 | 低 | 1-2 天/数据源 | 值得迁移 | +| WebSocket 实时数据 | 中 | 3-5 天 | 值得迁移 | +| 技术指标计算 | 中 | 5-10 天 | 值得迁移 | +| 信号评分引擎 | 中 | 3-5 天 | 值得迁移 | +| ML 模型训练 | 极高 | 不建议 | **保留 Python** | +| 回测框架 | 极高 | 不建议 | **保留 Python** | +| 数据可视化 | 高 | 不建议 | **保留 Python** | + +**结论**:不应该将整个系统从 Python 迁移到 Go,而应该将**性能敏感、长期运行的基础设施部分**用 Go 重写,**分析与研究部分**继续使用 Python。 + +--- + +## 参考资料 + +- [1] Go vs Python 执行速度对比:https://python.plainenglish.io/comparing-execution-speed-between-python-and-golang-e15197fdbca8 +- [2] Go vs Python Web 服务性能:https://medium.com/@dmytro.misik/go-vs-python-web-service-performance-1e5c16dbde76 +- [3] 对冲基金为何仍用 Python:https://www.marketcalls.in/python/if-python-is-slow-why-do-hedge-funds-quant-firms-and-prop-trading-desks-still-use-it.html +- [4] Go 在零售量化交易中的优势:https://www.reddit.com/r/golang/comments/1gmc2e6/where_does_go_shine_over_python_for_a_retail_algo/ +- [5] Rust/C++/Python/Java/Go/TypeScript HFT 对比:https://www.linkedin.com/pulse/comparing-rust-c-python-java-go-typescriptnodejs-hft-trading-souza-nxlkf +- [6] Go 迭代系统完整架构:`./Go量化知识迭代系统完整架构.md` +- [7] Air 热重载配置:`./Air热重载配置与迭代工作流程.md` diff --git a/20_Go迭代系统/数据源接入完整指南_扩展版.md b/20_Go迭代系统/数据源接入完整指南_扩展版.md new file mode 100644 index 0000000..0f76df9 --- /dev/null +++ b/20_Go迭代系统/数据源接入完整指南_扩展版.md @@ -0,0 +1,1027 @@ +# 数据源接入完整指南(扩展版) + +> 本文档在原版(12 个数据源)基础上大幅扩展,覆盖 **28 个数据源**,重点补充**社交媒体情绪数据**(X/Twitter、Reddit、Telegram)的**免费方案**,以及衍生品、链上替代方案、新闻情绪、宏观经济等新类别。 +> +> 返回:[Go 迭代系统主文档](./Go量化知识迭代系统完整架构.md) | [原版数据源指南](./数据源接入完整指南.md) + +--- + +## 一、数据源全景总览(28 个) + +| 类别 | 数据源 | 免费层 | 核心数据 | +|------|--------|--------|---------| +| **CEX(3)** | Binance | ✅ 完全免费 | K 线、资金费率、未平仓量 | +| | OKX | ✅ 完全免费 | K 线、期权、资金费率 | +| | Bybit | ✅ 完全免费 | K 线、资金费率、持仓量 | +| **期权衍生品(3)** | Deribit | ✅ 完全免费 | 期权链、IV、DVOL | +| | Laevitas | ✅ 有限免费 | GEX、期权流、资金费率聚合 | +| | Coinalyze | ✅ 有限免费 | 未平仓量、清算、资金费率 | +| **链上数据(4)** | Glassnode | ⚠️ 付费 | MVRV、SOPR、NVT | +| | CoinGlass | ⚠️ 付费 | 清算、多空比、资金费率 | +| | Dune Analytics | ✅ 免费 SQL | 链上自定义查询 | +| | Arkham Intelligence | ✅ 免费 | 巨鲸追踪、地址标签 | +| **DeFi 数据(3)** | DeFiLlama | ✅ 完全免费 | TVL、协议数据 | +| | The Graph | ✅ 有限免费 | DEX 链上数据 | +| | Token Terminal | ✅ 有限免费 | 协议收入、P/E 比率 | +| **综合市场(3)** | CoinMarketCap | ✅ 免费层 | 市值、排名 | +| | CoinGecko | ✅ 完全免费 | 市值、价格、社交数据 | +| | Messari | ⚠️ 付费 | 研究报告、链上指标 | +| **社交媒体(5)** | X/Twitter | ⚠️ 见方案 | KOL 情绪、热词 | +| | Reddit | ✅ 免费 API | r/Bitcoin 社区情绪 | +| | Telegram | ✅ 免费 | 公开频道消息 | +| | LunarCrush | ✅ 有限免费 | 综合社交情绪指数 | +| | Alternative.me | ✅ 完全免费 | 恐惧贪婪指数 | +| **新闻情绪(3)** | CryptoPanic | ✅ 免费层 | 加密新闻聚合 | +| | Santiment | ⚠️ 付费 | 社交趋势、开发活跃度 | +| | Finnhub | ✅ 免费层 | 新闻情绪、基本面 | +| **宏观经济(4)** | FRED | ✅ 完全免费 | 利率、CPI、M2 | +| | 美联储官网 | ✅ 完全免费 | FOMC 会议纪要 | +| | 世界银行 | ✅ 完全免费 | 全球宏观数据 | +| | Yahoo Finance | ✅ 完全免费 | 股指、外汇、大宗商品 | + +--- + +## 二、社交媒体数据源(重点补充) + +### 2.1 X/Twitter:免费方案全解析 + +X(原 Twitter)是加密货币 KOL 最集中的平台,但 2023 年后官方 API 已全面付费,最低档 **$42,000/年**,对个人量化研究者完全不可行。以下是经过验证的**免费替代方案**: + +**方案一:Nitter 镜像站抓取(推荐,完全免费)** + +Nitter 是 X 的开源前端镜像,通过 RSS/HTML 方式提供推文数据,无需 API Key。 + +```python +# Python 实现(ntscraper 库) +# pip install ntscraper + +from ntscraper import Nitter + +scraper = Nitter() + +# 抓取特定 KOL 的最新推文 +tweets = scraper.get_tweets("CryptoKaleo", mode="user", number=20) + +# 抓取关键词搜索结果 +btc_tweets = scraper.get_tweets("BTC bullish", mode="search", number=50) + +for tweet in tweets["tweets"]: + print(tweet["date"], tweet["text"], tweet["stats"]["likes"]) +``` + +```go +// Go 实现(HTTP 抓取 Nitter RSS) +package twitter + +import ( + "encoding/xml" + "fmt" + "net/http" + "time" +) + +// Nitter 公开实例列表(任选其一) +var NitterInstances = []string{ + "https://nitter.net", + "https://nitter.privacydev.net", + "https://nitter.poast.org", +} + +type NitterRSS struct { + Channel struct { + Items []struct { + Title string `xml:"title"` + PubDate string `xml:"pubDate"` + Link string `xml:"link"` + } `xml:"item"` + } `xml:"channel"` +} + +// GetUserTweets 通过 Nitter RSS 获取用户推文 +func GetUserTweets(username string) ([]Tweet, error) { + for _, instance := range NitterInstances { + url := fmt.Sprintf("%s/%s/rss", instance, username) + resp, err := http.Get(url) + if err != nil || resp.StatusCode != 200 { + continue // 尝试下一个实例 + } + defer resp.Body.Close() + + var rss NitterRSS + xml.NewDecoder(resp.Body).Decode(&rss) + + tweets := make([]Tweet, len(rss.Channel.Items)) + for i, item := range rss.Channel.Items { + tweets[i] = Tweet{ + Text: item.Title, + CreatedAt: item.PubDate, + URL: item.Link, + } + } + return tweets, nil + } + return nil, fmt.Errorf("所有 Nitter 实例均不可用") +} +``` + +**Nitter 方案的局限性**: +- 实例可用性不稳定(X 会封锁 IP),需维护多个备用实例列表 +- 无法获取推文的精确互动数据(点赞/转发数可能不准确) +- 搜索功能受限(无法按时间范围精确搜索) +- 不适合高频抓取(每分钟不超过 10 次请求) + +**方案二:twitterapi.io(免费额度,推荐)** + +twitterapi.io 提供 **100,000 免费积分**(约 1000 次 API 调用),适合低频量化研究: + +```python +import requests + +headers = {"X-API-Key": "YOUR_FREE_API_KEY"} # 注册免费获取 + +# 搜索加密货币相关推文 +response = requests.get( + "https://api.twitterapi.io/twitter/tweet/advanced_search", + headers=headers, + params={ + "query": "BTC bullish -is:retweet lang:en", + "queryType": "Latest", + "max_results": 20 + } +) +tweets = response.json()["tweets"] +``` + +**方案三:X 官方免费层(Basic Plan)** + +X 官方 Basic Plan 提供每月 **10,000 次读取请求**,适合极低频监控: + +``` +价格:$100/月(相对可接受) +限制:10,000 次读取/月,约 333 次/天 +适用:监控 10-20 个核心 KOL 账号的日更新 +``` + +**X/Twitter 数据接入策略总结**: + +| 方案 | 费用 | 数据量 | 稳定性 | 推荐场景 | +|------|------|--------|--------|---------| +| Nitter RSS | 完全免费 | 低(每用户最新 20 条)| 中(实例不稳定)| 监控 5-10 个 KOL | +| twitterapi.io | 免费额度 | 中(1000 次/月)| 高 | 低频情绪监控 | +| X Basic Plan | $100/月 | 中(10000 次/月)| 高 | 专业量化研究 | +| X Pro Plan | $5000/月 | 高 | 高 | 机构级使用 | + +**重点监控的加密 KOL 列表**: + +| 账号 | 方向 | 特点 | +|------|------|------| +| @CryptoKaleo | BTC/ETH 技术分析 | 图表分析,准确率较高 | +| @PlanB | BTC S2F 模型 | 长期价值投资视角 | +| @Pentosh1 | 技术分析 | 短期交易信号 | +| @CryptoCred | 技术分析教育 | 系统性分析框架 | +| @WhalePanda | 市场情绪 | 反向指标参考 | +| @glassnode | 链上数据 | 官方链上分析 | +| @ki_young_ju | 链上数据 | CryptoQuant 创始人 | + +--- + +### 2.2 Reddit:完全免费的社区情绪数据 + +Reddit 提供官方免费 API(PRAW),r/Bitcoin 和 r/CryptoCurrency 是最重要的散户情绪来源。 + +**Python 接入(PRAW 库)**: + +```python +# pip install praw +import praw + +reddit = praw.Reddit( + client_id="YOUR_CLIENT_ID", # Reddit App 免费注册 + client_secret="YOUR_CLIENT_SECRET", + user_agent="QuantKnowledge/1.0" +) + +# 获取 r/Bitcoin 热门帖子 +subreddit = reddit.subreddit("Bitcoin") +hot_posts = list(subreddit.hot(limit=25)) + +for post in hot_posts: + print(f"标题: {post.title}") + print(f"评分: {post.score}") + print(f"评论数: {post.num_comments}") + print(f"情绪词: {'bullish' if 'bull' in post.title.lower() else 'bearish'}") +``` + +**Go 接入(REST API)**: + +```go +package reddit + +import ( + "encoding/json" + "fmt" + "net/http" +) + +const RedditBaseURL = "https://www.reddit.com" + +type RedditPost struct { + Title string `json:"title"` + Score int `json:"score"` + NumComments int `json:"num_comments"` + Created float64 `json:"created_utc"` + URL string `json:"url"` +} + +// GetHotPosts 获取指定 subreddit 的热门帖子 +func GetHotPosts(subreddit string, limit int) ([]RedditPost, error) { + url := fmt.Sprintf("%s/r/%s/hot.json?limit=%d", RedditBaseURL, subreddit, limit) + + req, _ := http.NewRequest("GET", url, nil) + req.Header.Set("User-Agent", "QuantKnowledge/1.0") // Reddit 要求 User-Agent + + client := &http.Client{} + resp, err := client.Do(req) + if err != nil { + return nil, err + } + defer resp.Body.Close() + + var result struct { + Data struct { + Children []struct { + Data RedditPost `json:"data"` + } `json:"children"` + } `json:"data"` + } + + json.NewDecoder(resp.Body).Decode(&result) + + posts := make([]RedditPost, len(result.Data.Children)) + for i, child := range result.Data.Children { + posts[i] = child.Data + } + return posts, nil +} +``` + +**Reddit 情绪指标构建**: + +```python +def calculate_reddit_sentiment(subreddit="Bitcoin", limit=100): + """ + 基于 Reddit 帖子构建情绪指标 + 返回值:-1(极度悲观)到 +1(极度乐观) + """ + posts = get_hot_posts(subreddit, limit) + + bullish_keywords = ["bull", "moon", "pump", "buy", "long", "ATH", "breakout"] + bearish_keywords = ["bear", "dump", "sell", "short", "crash", "rekt", "dead"] + + total_score = 0 + weighted_sentiment = 0 + + for post in posts: + text = (post["title"] + " " + post.get("selftext", "")).lower() + bull_count = sum(1 for kw in bullish_keywords if kw in text) + bear_count = sum(1 for kw in bearish_keywords if kw in text) + + post_sentiment = (bull_count - bear_count) / max(bull_count + bear_count, 1) + weight = post["score"] + post["num_comments"] # 高互动帖子权重更高 + + weighted_sentiment += post_sentiment * weight + total_score += weight + + return weighted_sentiment / max(total_score, 1) +``` + +**关键 Subreddit 列表**: + +| Subreddit | 规模 | 特点 | 量化意义 | +|-----------|------|------|---------| +| r/Bitcoin | 700 万+ | BTC 长期持有者 | 散户情绪基准 | +| r/CryptoCurrency | 900 万+ | 综合加密讨论 | 市场整体情绪 | +| r/ethtrader | 200 万+ | ETH 交易者 | ETH 情绪 | +| r/SatoshiStreetBets | 50 万+ | 高风险交易 | 极端情绪信号 | +| r/algotrading | 150 万+ | 量化交易者 | 专业视角 | + +--- + +### 2.3 Telegram:公开频道免费抓取 + +Telegram 是加密货币信号频道最集中的平台,通过 Telethon 库可以免费抓取公开频道消息。 + +**Python 接入(Telethon 库)**: + +```python +# pip install telethon +from telethon.sync import TelegramClient +from telethon import functions, types +import asyncio + +# 需要注册 Telegram App 获取 api_id 和 api_hash(完全免费) +# 注册地址:https://my.telegram.org/apps + +api_id = YOUR_API_ID +api_hash = "YOUR_API_HASH" + +async def get_channel_messages(channel_username, limit=100): + async with TelegramClient("quant_session", api_id, api_hash) as client: + messages = [] + async for message in client.iter_messages(channel_username, limit=limit): + if message.text: + messages.append({ + "id": message.id, + "date": message.date.isoformat(), + "text": message.text, + "views": message.views or 0, + "forwards": message.forwards or 0 + }) + return messages + +# 使用示例 +messages = asyncio.run(get_channel_messages("@whale_alert")) +``` + +**Go 接入(MTProto 协议,需要第三方库)**: + +```go +// 使用 gotd/td 库(Go 的 Telegram MTProto 实现) +// go get github.com/gotd/td + +package telegram + +import ( + "context" + "github.com/gotd/td/telegram" + "github.com/gotd/td/tg" +) + +// 注意:Go 的 Telegram 库较为复杂,建议此模块保留 Python 实现 +// Go 层通过 HTTP 调用 Python 微服务获取 Telegram 数据 +``` + +**推荐监控的 Telegram 频道**: + +| 频道 | 类型 | 内容 | 量化意义 | +|------|------|------|---------| +| @whale_alert | 链上巨鲸 | 大额转账提醒 | 即时巨鲸动向 | +| @CryptoQuantFund | 量化信号 | 技术分析信号 | 信号参考 | +| @Bitcoin_signals | 交易信号 | BTC 交易信号 | 散户信号聚合 | +| @glassnode_alerts | 链上数据 | Glassnode 关键指标触发 | 链上预警 | +| @coinglass_alert | 衍生品 | 大额清算预警 | 清算风险 | +| @CryptoNewsFlash | 新闻 | 实时加密新闻 | 事件驱动 | + +**Telegram 数据处理流程**: + +``` +Telethon 抓取公开频道消息 + ↓ +文本预处理(去除链接、表情符号) + ↓ +关键词提取(BTC/ETH/价格/信号词) + ↓ +情绪分类(多头/空头/中性) + ↓ +写入 MySQL(channel_messages 表) + ↓ +Go 服务读取并聚合为情绪指标 + ↓ +更新 MD 文档中的社交情绪区块 +``` + +--- + +### 2.4 LunarCrush:综合社交情绪指数 + +LunarCrush 聚合 X、Reddit、YouTube 等平台数据,提供标准化的社交情绪指数,免费层可访问基础数据。 + +**基础 URL**:`https://lunarcrush.com/api4/public` + +**免费层可用端点**: + +| 端点 | 说明 | 数据内容 | +|------|------|---------| +| `/coins/list/v2` | 币种社交排名 | AltRank、Galaxy Score | +| `/coins/{coin}/v1` | 单币种社交数据 | 社交量、情绪、互动量 | +| `/coins/{coin}/time-series/v2` | 历史社交数据 | 时序社交指标 | + +**核心指标说明**: + +| 指标 | 说明 | 量化意义 | +|------|------|---------| +| Galaxy Score | 综合社交健康评分(0-100)| > 70 = 社交热度高 | +| AltRank | 山寨币社交排名 | 排名上升 = 关注度增加 | +| Social Volume | 社交提及量 | 急增 = 市场关注 | +| Social Engagement | 社交互动量 | 高互动 = 情绪强烈 | +| Social Sentiment | 情绪极性(-1 到 +1)| > 0.5 = 偏多头情绪 | + +```python +import requests + +# 免费层无需 API Key(有速率限制) +def get_lunarcrush_data(coin="BTC"): + url = f"https://lunarcrush.com/api4/public/coins/{coin}/v1" + resp = requests.get(url, headers={"Authorization": "Bearer FREE_TOKEN"}) + data = resp.json()["data"] + return { + "galaxy_score": data.get("galaxy_score"), + "alt_rank": data.get("alt_rank"), + "social_volume": data.get("social_volume"), + "social_sentiment": data.get("sentiment") + } +``` + +--- + +### 2.5 Alternative.me 恐惧贪婪指数:完全免费 + +Alternative.me 的加密货币恐惧贪婪指数是最广泛使用的市场情绪指标,**完全免费,无需 API Key**。 + +**API 端点**:`https://api.alternative.me/fng/` + +```python +import requests + +def get_fear_greed_index(limit=30): + """获取最近 30 天的恐惧贪婪指数""" + url = f"https://api.alternative.me/fng/?limit={limit}&format=json" + resp = requests.get(url) + data = resp.json()["data"] + return [ + { + "value": int(d["value"]), + "classification": d["value_classification"], # "Extreme Fear"/"Fear"/"Neutral"/"Greed"/"Extreme Greed" + "timestamp": d["timestamp"] + } + for d in data + ] +``` + +```go +// Go 接入 +package alternativeme + +import ( + "encoding/json" + "net/http" +) + +const FearGreedURL = "https://api.alternative.me/fng/?limit=30&format=json" + +type FearGreedData struct { + Value int `json:"value,string"` + Classification string `json:"value_classification"` + Timestamp string `json:"timestamp"` +} + +func GetFearGreedIndex() ([]FearGreedData, error) { + resp, err := http.Get(FearGreedURL) + if err != nil { + return nil, err + } + defer resp.Body.Close() + + var result struct { + Data []FearGreedData `json:"data"` + } + json.NewDecoder(resp.Body).Decode(&result) + return result.Data, nil +} +``` + +**恐惧贪婪指数解读**: + +| 数值范围 | 分类 | 市场含义 | 量化操作 | +|---------|------|---------|---------| +| 0-24 | 极度恐惧 | 市场恐慌性抛售 | 逆向思维买入区 | +| 25-44 | 恐惧 | 市场悲观 | 谨慎观望 | +| 45-55 | 中性 | 市场平衡 | 跟随趋势 | +| 56-74 | 贪婪 | 市场乐观 | 减仓区 | +| 75-100 | 极度贪婪 | 市场狂热 | 逆向思维卖出区 | + +--- + +## 三、新闻情绪数据源 + +### 3.1 CryptoPanic:加密新闻聚合(免费层) + +CryptoPanic 聚合 200+ 个加密新闻源,提供免费 API(每天 1000 次请求)。 + +**基础 URL**:`https://cryptopanic.com/api/v1` + +**注册**:https://cryptopanic.com/developers/api/ (免费注册获取 API Key) + +**核心端点**: + +| 端点 | 说明 | 关键参数 | +|------|------|---------| +| `/posts/` | 新闻列表 | `currencies=BTC,ETH&filter=hot` | +| `/posts/` | 按情绪过滤 | `filter=bullish` 或 `filter=bearish` | + +```python +import requests + +CRYPTOPANIC_API_KEY = "YOUR_FREE_API_KEY" + +def get_crypto_news(currencies="BTC,ETH", filter_type="hot", limit=20): + url = "https://cryptopanic.com/api/v1/posts/" + params = { + "auth_token": CRYPTOPANIC_API_KEY, + "currencies": currencies, + "filter": filter_type, # hot/rising/bullish/bearish/important + "public": "true" + } + resp = requests.get(url, params=params) + results = resp.json()["results"] + + return [ + { + "title": r["title"], + "source": r["source"]["title"], + "published_at": r["published_at"], + "votes": r.get("votes", {}), + "currencies": [c["code"] for c in r.get("currencies", [])] + } + for r in results[:limit] + ] + +# 情绪分析:统计看涨/看跌新闻比例 +def get_news_sentiment_ratio(currency="BTC"): + bullish = len(get_crypto_news(currency, "bullish", 50)) + bearish = len(get_crypto_news(currency, "bearish", 50)) + total = bullish + bearish + if total == 0: + return 0 + return (bullish - bearish) / total # -1 到 +1 +``` + +--- + +### 3.2 Finnhub:新闻情绪 + 基本面(免费层) + +Finnhub 提供加密货币新闻情绪分析,免费层每分钟 60 次请求。 + +**基础 URL**:`https://finnhub.io/api/v1` + +**核心端点**: + +| 端点 | 说明 | 参数 | +|------|------|------| +| `/news` | 加密新闻 | `category=crypto&token=YOUR_KEY` | +| `/news-sentiment` | 新闻情绪分析 | `symbol=BINANCE:BTCUSDT&token=YOUR_KEY` | +| `/crypto/candle` | K 线数据 | `symbol=BINANCE:BTCUSDT&resolution=10` | + +```go +package finnhub + +import ( + "encoding/json" + "fmt" + "net/http" +) + +const FinnhubBaseURL = "https://finnhub.io/api/v1" + +type NewsSentiment struct { + BullishPercent float64 `json:"buzz"` + BearishPercent float64 `json:"bearishPercent"` + BullishPercent2 float64 `json:"bullishPercent"` + Score float64 `json:"companyNewsScore"` + SectorAvg float64 `json:"sectorAverageBullishPercent"` +} + +func GetNewsSentiment(symbol, apiKey string) (*NewsSentiment, error) { + url := fmt.Sprintf("%s/news-sentiment?symbol=%s&token=%s", + FinnhubBaseURL, symbol, apiKey) + + resp, err := http.Get(url) + if err != nil { + return nil, err + } + defer resp.Body.Close() + + var sentiment NewsSentiment + json.NewDecoder(resp.Body).Decode(&sentiment) + return &sentiment, nil +} +``` + +--- + +## 四、扩展链上数据源 + +### 4.1 Dune Analytics:免费 SQL 链上查询 + +Dune 允许用 SQL 查询以太坊、Solana 等主流链的原始数据,免费层提供 API 访问。 + +**基础 URL**:`https://api.dune.com/api/v1` + +**认证**:`X-Dune-API-Key: YOUR_API_KEY`(免费注册获取) + +**工作流程**: +1. 在 Dune 网站编写 SQL 查询(如 Uniswap V3 BTC 交易量) +2. 获取查询 ID(URL 中的数字) +3. 通过 API 定期执行查询并获取结果 + +```python +import requests +import time + +DUNE_API_KEY = "YOUR_FREE_API_KEY" +HEADERS = {"X-Dune-API-Key": DUNE_API_KEY} + +def execute_dune_query(query_id: int) -> dict: + """执行 Dune 查询并等待结果""" + # 1. 触发执行 + execute_url = f"https://api.dune.com/api/v1/query/{query_id}/execute" + exec_resp = requests.post(execute_url, headers=HEADERS) + execution_id = exec_resp.json()["execution_id"] + + # 2. 轮询等待结果 + status_url = f"https://api.dune.com/api/v1/execution/{execution_id}/status" + while True: + status = requests.get(status_url, headers=HEADERS).json() + if status["state"] == "QUERY_STATE_COMPLETED": + break + time.sleep(2) + + # 3. 获取结果 + result_url = f"https://api.dune.com/api/v1/execution/{execution_id}/results" + return requests.get(result_url, headers=HEADERS).json()["result"]["rows"] + +# 示例:查询 BTC 巨鲸地址余额变化(需要预先在 Dune 创建查询) +# 查询 ID 可以从 Dune 社区现有查询中找到 +btc_whale_data = execute_dune_query(query_id=3456789) +``` + +**推荐的 Dune 社区查询**(可直接复用): + +| 查询名称 | 说明 | 适用链 | +|---------|------|--------| +| Uniswap V3 Volume | DEX 交易量 | Ethereum | +| Aave Liquidations | 清算事件 | Ethereum | +| ETH Staking Flows | 质押资金流向 | Ethereum | +| SOL DEX Volume | Solana DEX 交易量 | Solana | +| USDT/USDC Mint/Burn | 稳定币增发/销毁 | 多链 | + +--- + +### 4.2 Arkham Intelligence:免费巨鲸追踪 + +Arkham 提供地址标签和巨鲸追踪功能,是 Nansen 的免费替代方案。 + +**访问方式**:https://platform.arkhamintelligence.com/ + +**免费功能**: +- 地址标签查询(交易所、基金、KOL 地址) +- 实体追踪(Binance、Coinbase 等交易所的链上资金流向) +- 历史交易记录查询 + +**API 接入**(需申请 API Key): + +```python +import requests + +ARKHAM_API_KEY = "YOUR_ARKHAM_API_KEY" + +def get_entity_transfers(entity="binance", limit=20): + """获取特定实体(如 Binance)的最新链上转账""" + url = "https://api.arkhamintelligence.com/transfers" + headers = {"API-Key": ARKHAM_API_KEY} + params = { + "entities": entity, + "limit": limit, + "sortKey": "time", + "sortDir": "desc" + } + resp = requests.get(url, headers=headers, params=params) + return resp.json()["transfers"] +``` + +**量化使用场景**: +- 监控 Binance 冷钱包的大额 BTC 转入/转出(判断交易所储备变化) +- 追踪已知巨鲸地址的持仓变化 +- 检测大型 DeFi 协议的资金流向 + +--- + +## 五、扩展综合市场数据源 + +### 5.1 CoinGecko:完全免费的市场数据 + +CoinGecko 提供完全免费的市场数据 API(无需 API Key),是 CoinMarketCap 的最佳免费替代。 + +**基础 URL**:`https://api.coingecko.com/api/v3` + +**核心端点**: + +| 端点 | 说明 | 参数 | +|------|------|------| +| `/simple/price` | 实时价格 | `ids=bitcoin,ethereum&vs_currencies=usd` | +| `/coins/{id}/market_chart` | 历史价格 | `vs_currency=usd&days=30` | +| `/coins/markets` | 市值排名 | `vs_currency=usd&order=market_cap_desc&per_page=100` | +| `/global` | 全球市场指标 | — | +| `/coins/{id}` | 币种详情(含社交数据)| — | + +```go +package coingecko + +import ( + "encoding/json" + "fmt" + "net/http" +) + +const BaseURL = "https://api.coingecko.com/api/v3" + +type GlobalData struct { + TotalMarketCap map[string]float64 `json:"total_market_cap"` + TotalVolume map[string]float64 `json:"total_volume"` + BTCDominance float64 `json:"bitcoin_dominance_percentage"` + ETHDominance float64 `json:"eth_dominance_percentage"` + MarketCapChange24h float64 `json:"market_cap_change_percentage_24h_usd"` +} + +func GetGlobalData() (*GlobalData, error) { + resp, err := http.Get(fmt.Sprintf("%s/global", BaseURL)) + if err != nil { + return nil, err + } + defer resp.Body.Close() + + var result struct { + Data GlobalData `json:"data"` + } + json.NewDecoder(resp.Body).Decode(&result) + return &result.Data, nil +} +``` + +**CoinGecko vs CoinMarketCap 对比**: + +| 维度 | CoinGecko | CoinMarketCap | +|------|-----------|--------------| +| 免费程度 | **完全免费**(无 Key)| 免费层(需 Key,333 次/天)| +| 数据质量 | 高 | 高 | +| 历史数据 | 免费(有限)| 付费 | +| 社交数据 | 有(GitHub、Twitter 关注)| 有 | +| 速率限制 | 30 次/分(免费)| 333 次/天(免费)| + +--- + +### 5.2 Token Terminal:协议基本面数据 + +Token Terminal 提供 DeFi 协议的收入、P/E 比率等基本面数据,免费层可访问主要数据。 + +**访问方式**:https://tokenterminal.com/terminal/ + +**核心指标**: + +| 指标 | 说明 | 量化意义 | +|------|------|---------| +| Protocol Revenue | 协议收入(费用)| 判断协议实际使用量 | +| P/E Ratio | 市值/年化收入 | 估值判断(类股票 P/E)| +| TVL | 总锁仓量 | DeFi 协议规模 | +| Active Users | 活跃用户数 | 用户增长趋势 | + +--- + +## 六、扩展宏观经济数据源 + +### 6.1 Yahoo Finance:免费股指与大宗商品 + +Yahoo Finance 提供免费的股票、ETF、外汇、大宗商品数据,通过 `yfinance` Python 库可直接访问。 + +```python +# pip install yfinance +import yfinance as yf + +# 获取黄金价格(GC=F) +gold = yf.download("GC=F", period="1mo", interval="1d") + +# 获取标普 500(^GSPC) +sp500 = yf.download("^GSPC", period="3mo", interval="1d") + +# 获取美元指数(DX-Y.NYB) +dxy = yf.download("DX-Y.NYB", period="1mo", interval="1d") + +# 获取比特币 ETF(IBIT) +ibit = yf.download("IBIT", period="1mo", interval="1d") +``` + +**Go 接入**(通过 Yahoo Finance 非官方 API): + +```go +package yahoo + +import ( + "encoding/json" + "fmt" + "net/http" +) + +// 获取股票/ETF/指数数据 +func GetQuote(symbol string) (map[string]interface{}, error) { + url := fmt.Sprintf( + "https://query1.finance.yahoo.com/v8/finance/chart/%s?interval=1d&range=1mo", + symbol, + ) + req, _ := http.NewRequest("GET", url, nil) + req.Header.Set("User-Agent", "Mozilla/5.0") + + client := &http.Client{} + resp, err := client.Do(req) + if err != nil { + return nil, err + } + defer resp.Body.Close() + + var result map[string]interface{} + json.NewDecoder(resp.Body).Decode(&result) + return result, nil +} +``` + +**重要监控标的**: + +| 标的 | 代码 | 与 BTC 的关系 | +|------|------|-------------| +| 黄金 | GC=F | 正相关(避险资产)| +| 标普 500 | ^GSPC | 正相关(风险偏好)| +| 纳斯达克 | ^IXIC | 强正相关(科技股)| +| 美元指数 | DX-Y.NYB | 负相关(美元强 = BTC 弱)| +| 10 年期美债 | ^TNX | 负相关(利率高 = 风险资产弱)| +| BTC ETF(IBIT)| IBIT | 直接关联 | +| VIX 恐慌指数 | ^VIX | 负相关(VIX 高 = 市场恐慌)| + +--- + +### 6.2 世界银行:全球宏观数据 + +世界银行提供完全免费的全球宏观经济数据,适合长期宏观分析。 + +**基础 URL**:`https://api.worldbank.org/v2` + +```python +import requests + +def get_world_bank_data(indicator="NY.GDP.MKTP.CD", country="US", years=5): + """获取世界银行指标数据""" + url = f"https://api.worldbank.org/v2/country/{country}/indicator/{indicator}" + params = { + "format": "json", + "per_page": years, + "mrv": years # 最近 N 年 + } + resp = requests.get(url, params=params) + data = resp.json()[1] # [0] 是元数据,[1] 是数据 + return [{"year": d["date"], "value": d["value"]} for d in data if d["value"]] + +# 常用指标 +# NY.GDP.MKTP.CD = GDP(美元) +# FP.CPI.TOTL.ZG = CPI 通胀率 +# SL.UEM.TOTL.ZS = 失业率 +``` + +--- + +## 七、衍生品数据扩展 + +### 7.1 Laevitas:期权与衍生品分析(有限免费) + +Laevitas 专注于加密衍生品数据,提供 GEX(Gamma 敞口)、期权流、资金费率聚合等高级数据。 + +**基础 URL**:`https://api.laevitas.ch` + +**核心数据**: + +| 数据 | 说明 | 量化意义 | +|------|------|---------| +| GEX(Gamma 敞口)| 做市商 Gamma 对冲方向 | 正 GEX = 价格稳定区,负 GEX = 价格波动加剧 | +| 期权流(Option Flow)| 大额期权成交记录 | 机构方向性押注 | +| 资金费率聚合 | 15+ 交易所资金费率 | 市场情绪极值判断 | +| 最大痛点 | 期权到期最大痛点价格 | 到期日价格引力 | +| IV 曲面 | 各行权价/到期日的 IV | 期权定价与市场预期 | + +--- + +### 7.2 Coinalyze:未平仓量与清算(有限免费) + +Coinalyze 提供多交易所的未平仓量、清算数据聚合,免费层可访问基础数据。 + +**基础 URL**:`https://api.coinalyze.net/v1` + +**核心端点**: + +| 端点 | 说明 | +|------|------| +| `/open-interest` | 多所未平仓量聚合 | +| `/liquidation-history` | 历史清算数据 | +| `/funding-rate` | 多所资金费率 | +| `/long-short-ratio` | 多空比 | + +--- + +## 八、数据源优先级与接入策略 + +### 8.1 按重要性排序 + +**第一优先级(必须接入,完全免费)**: + +| 数据源 | 核心价值 | +|--------|---------| +| Binance(合约)| 实时 K 线、资金费率 | +| CoinGecko | 市值、排名、全球数据 | +| Alternative.me | 恐惧贪婪指数 | +| FRED | 宏观利率、CPI | +| DeFiLlama | DeFi TVL | +| Reddit(PRAW)| 社区情绪 | +| CryptoPanic | 新闻情绪 | +| Dune Analytics | 链上自定义查询 | + +**第二优先级(有限免费,建议接入)**: + +| 数据源 | 核心价值 | +|--------|---------| +| OKX | 期权数据、K 线交叉验证 | +| Bybit | 资金费率三所对比 | +| Deribit | DVOL、期权链 | +| Telegram(Telethon)| 信号频道、巨鲸预警 | +| LunarCrush | 综合社交情绪 | +| Yahoo Finance | 股指、大宗商品关联 | +| Arkham | 巨鲸追踪 | + +**第三优先级(付费,按需接入)**: + +| 数据源 | 费用 | 核心价值 | +|--------|------|---------| +| Glassnode | $29-$799/月 | 最权威链上数据 | +| CoinGlass | $29-$99/月 | 衍生品清算数据 | +| Santiment | $49-$999/月 | 社交趋势、开发活跃度 | +| X/Twitter Basic | $100/月 | KOL 情绪 | + +### 8.2 社交媒体免费方案最终推荐 + +综合稳定性、数据质量、接入难度,推荐以下**完全免费**的社交媒体数据方案: + +``` +X/Twitter → Nitter RSS(监控 10 个核心 KOL)+ twitterapi.io 免费额度 +Reddit → PRAW 官方库(r/Bitcoin + r/CryptoCurrency) +Telegram → Telethon(监控 10 个核心公开频道) +情绪汇总 → Alternative.me 恐惧贪婪指数(最稳定、最权威) +新闻情绪 → CryptoPanic 免费层(200+ 新闻源) +``` + +--- + +## 九、数据源接入状态监控(扩展版) + +系统 `/api/v1/datasources` 接口将返回所有 28 个数据源的状态: + +```json +{ + "timestamp": "2026-03-06T10:10:00+08:00", + "summary": { + "total": 28, + "online": 26, + "offline": 1, + "degraded": 1 + }, + "by_category": { + "cex": {"total": 3, "online": 3}, + "derivatives": {"total": 3, "online": 3}, + "onchain": {"total": 4, "online": 3}, + "defi": {"total": 3, "online": 3}, + "market": {"total": 3, "online": 3}, + "social": {"total": 5, "online": 4}, + "news": {"total": 3, "online": 3}, + "macro": {"total": 4, "online": 4} + } +} +``` + +--- + +## 参考资料 + +- [1] Nitter 开源项目:https://github.com/zedeus/nitter +- [2] ntscraper Python 库:https://github.com/bocchilorenzo/ntscraper +- [3] twitterapi.io 免费额度:https://dev.to/sivarampg/scraping-twitter-in-2025-a-developers-guide-to-surviving-the-api-apocalypse-5bbd +- [4] X 官方 API 定价:https://developer.x.com/ +- [5] PRAW Reddit API 文档:https://praw.readthedocs.io/ +- [6] Telethon Telegram 库:https://docs.telethon.dev/ +- [7] LunarCrush API:https://lunarcrush.com/ +- [8] Alternative.me 恐惧贪婪 API:https://alternative.me/crypto/api/ +- [9] CryptoPanic API:https://cryptopanic.com/developers/api/ +- [10] Finnhub API:https://finnhub.io/docs/api +- [11] Dune Analytics API:https://docs.dune.com/api-reference/overview/introduction +- [12] Arkham Intelligence:https://platform.arkhamintelligence.com/ +- [13] CoinGecko API:https://www.coingecko.com/api/documentation +- [14] Token Terminal:https://tokenterminal.com/ +- [15] Laevitas API:https://docs.laevitas.ch/ +- [16] Coinalyze API:https://coinalyze.net/ +- [17] Yahoo Finance(yfinance):https://pypi.org/project/yfinance/ +- [18] FRED API:https://fred.stlouisfed.org/docs/api/fred/ +- [19] 世界银行 API:https://datahelpdesk.worldbank.org/knowledgebase/articles/889392 +- [20] 原版数据源指南(12 个):`./数据源接入完整指南.md`