From e25c6aa6864716fc06664c6ff770a69c23be8093 Mon Sep 17 00:00:00 2001 From: xxm Date: Tue, 4 Aug 2026 11:13:42 +0800 Subject: [PATCH] =?UTF-8?q?docs:=20=E6=B6=88=E6=81=AF=E9=9D=A2=E8=A1=A5?= =?UTF-8?q?=E6=95=B0=E6=8D=AE=E7=A0=94=E7=A9=B6=E2=80=94=E2=80=94=E5=90=8C?= =?UTF-8?q?=E8=8A=B1=E9=A1=BAAPI=E5=AE=9A=E5=90=91=E6=8B=89=E5=8F=96?= =?UTF-8?q?=E8=83=BD=E5=8A=9B(=C2=A722)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - offset游标语义: 严格排他上界(返回之前新闻), 实测验证 - 窗口化拉取算法: offset=终点+1s往回翻, 到起点停, 过滤区间 - 历史深度2011+, 6周窗口19页(size100约4页)0越界 - 定向补: 210只赢家波段×[起点-7天~起点+40天]窗口, 已入库9471条 - 12维消息面可补: 同花顺主源(2016-2026)+东财近期补充 --- docs/v_mr_strategy.md | 60 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 60 insertions(+) diff --git a/docs/v_mr_strategy.md b/docs/v_mr_strategy.md index 95c29083..daa9a161 100644 --- a/docs/v_mr_strategy.md +++ b/docs/v_mr_strategy.md @@ -533,3 +533,63 @@ r5f/RSI/bias60 合成强度分,十等分:D1(+1.24%/41%) → D10(+18.17%/90.5 | 年化 | 12.0% | **12.8%** | | 回撤 | 18.7% | **16.4%** | | 收益/回撤 | 8.7 | **10.9** | + + +## §22 消息面补数据研究:同花顺 API 定向拉取能力(2026-08-04) + +> 老莫提醒:现代 web 应用是"拉到最后触发拉取下一批"(无限滚动),不是"下一页"翻页。且做过的事要记录(§ + 代码块规范)。本节固化消息面补数据的研究结论。 + +### §22.1 同花顺 timeline API 定向拉取能力(实测验证) + +**接口**:`https://news.10jqka.com.cn/timeline_web/web/v1/news/list` + +**分页参数**: +- `marketId`: 17=上交所(6开头), 33=深交所(0/3开头) +- `code`: 6位股票代码 +- `size`: 每页条数(默认20,**实测可用100**,减少请求数) +- `offset`: **秒级时间游标**(publishTime/1000),语义=**严格排他上界**(返回该时间戳之前的新闻) + +**实测确认(600519 茅台)**: +- offset=2024-06-01 00:00 → 返回 2024-05-31 21:49:29 及更早新闻(**offset 之前的**) +- offset=某条新闻的确切秒 → **该新闻自身不被返回**(严格排他) +- 翻页连续无重叠无缺口(page1末 05-30 08:02:19 → page2首 05-30 06:41:30) +- **历史深度可回溯到 2011 年**(offset=2015 时返回 2011/2013/2014 新闻) +- `startTime/endTime/start/end/beginTime` 等参数**全部无效**——API 只支持 offset 单边上界 + +**窗口化拉取算法**(用于定向补某时间段新闻): +1. offset = 窗口终点 + 1秒(排他上界,包含终点时刻) +2. 往回翻页(size=100 减少请求) +3. 当本页最后一条 publishTime < 窗口起点 → 停止 +4. 过滤只保留 [起点, 终点] 区间内的新闻 +5. 实测:6 周窗口 19 页(size=20)→ size=100 只需 ~4 页,**0 条越界** + +### §22.2 消息面补数据方案:定向拉取(非全量) + +**原则**:不全量补全市场新闻,而是**先定赢家波段,只补相关股票在相关时段的消息**。 + +**首批研究对象**:涨幅≥80% 的极端波段,每年取涨幅前 20 → **220 个波段,210 只股票**,年份分布均衡(2016-2026)。 + +**定向窗口**:波段起点前 7 天 ~ 起点后 40 天(约 47 天),覆盖入场前后的消息面。 + +**执行结果**:`news_backfill_window.py` 已完成首批拉取: +- 210 只 × 波段窗口 +- **共入库 9471 条新闻**(stock_news 表,source=同花顺iNews) +- 单票窗口拉取约 3-8 页(size=20),全程约 20-30 分钟 + +### §22.3 12 维消息面可补的结论 + +| 维度 | 数据源 | 历史覆盖 | 状态 | +|------|--------|---------|------| +| 个股消息面 | 同花顺 ths_news.py | **2011+(实测)** | ✅ 可补 | +| 个股消息面(近期) | 东财 search-api | 近6个月 | ⚠️ 仅近期 | +| 大盘消息面 | macro_context_collector.py | 仅实时 | ❌ 硬缺口 | +| 行业消息面 | signal_news | 仅实时 | ❌ 硬缺口 | + +**消费端**:strategy_lab.py 的 `prepare_news_context()` + `news_mult=2.0` 已启用,补数据直接进回测增益。 + +### §22.4 已固化的采集脚本 +``` +/home/hmo/MoFin/deploy/profile-scripts/ths_news.py # 同花顺翻页采集(全量backfill+daily) +/home/hmo/MoFin/deploy/profile-scripts/news_collector.py # 东财翻页采集(近6个月) +/tmp/news_backfill_window.py # 定向窗口拉取(赢家波段相关时段) +```