选题十七配套数据,时间范围 2016-01 ~ 至今(约10年),全部来自公开免费数据源。 所有脚本可重复运行,自动增量更新到最新。
数据/
├── fetch_energy_data.py # 脚本1:行情/库存/汇率采集
├── fetch_policy_texts.py # 脚本2:能源政策文本采集(断点续传)
├── build_event_study.py # 脚本3:事件研究数据集构建
├── llm_event_extraction_prompt.md# 任务② LLM抽取提示词模板 + 关键词词典
├── 重大油价事件库.csv # 任务① 种子事件库(32个事件)
├── raw/ # 原始结构化数据
│ ├── EIA_布伦特原油现货_日度.csv
│ ├── EIA_WTI原油现货_日度.csv
│ ├── EIA_HenryHub天然气现货_日度.csv
│ ├── EIA_美国商业原油库存_周度.csv
│ ├── EIA_美国战略石油储备_周度.csv
│ ├── EIA_美国原油产量_周度.csv
│ ├── 新浪_WTI原油期货_日度.csv # 含 OHLCV
│ ├── 新浪_布伦特原油期货_日度.csv
│ ├── 新浪_天然气期货_日度.csv
│ ├── 新浪_INE上海原油期货_日度.csv # 含持仓量/结算价
│ ├── 新浪_美元指数_日度.csv
│ ├── 新浪_美元兑人民币汇率_日度.csv
│ └── policy/
│ ├── 政策文件清单.csv # 政策元数据(128篇)
│ └── texts/<doc_id>.txt # 政策全文(每篇一个txt)
└── processed/ # 分析就绪数据
├── 能源日度行情面板.csv # ★ 2724行×15列,含对数收益率
├── 能源周度库存产量面板.csv # ★ 544行
├── 能源政策文本库.csv # ★ 任务④ 元数据+全文(128篇)
├── 事件研究_事件窗明细.csv # ★ 任务③ 事件×资产×相对日(2418行)
└── 事件研究_冲击汇总.csv # ★ 任务③ 事件×资产汇总(153行)
| 实验任务 | 直接可用的文件 |
|---|---|
| ① 构建重大事件库 | 重大油价事件库.csv(种子32条,含类型/时间/方向/持续期,需核实扩充) |
| ② LLM 抽取事件/政策/关键词 | llm_event_extraction_prompt.md + processed/能源政策文本库.csv(+你的Wind新闻) |
| ③ 事件前后异常波动 | processed/事件研究_事件窗明细.csv、事件研究_冲击汇总.csv(已算好AR/z/CAR) |
| ④ 政策-市场-情绪同步性 | 能源政策文本库.csv × 事件研究_冲击汇总.csv 按日期合并 |
| 列名 | 含义 | 单位 | 来源 |
|---|---|---|---|
| date | 日期 | - | - |
| brent_spot / wti_spot | Brent/WTI 原油现货价 | 美元/桶 | EIA 官方 |
| natgas_henryhub | Henry Hub 天然气现货 | 美元/MMBtu | EIA 官方 |
| brent_fut / wti_fut | ICE Brent / NYMEX WTI 期货连续合约收盘 | 美元/桶 | 新浪外盘(OIL/CL) |
| natgas_fut | NYMEX 天然气期货连续收盘 | 美元/MMBtu | 新浪外盘(NG) |
| usd_index | 美元指数 | 点 | 新浪外汇(DINIW) |
| usdcny | 美元兑人民币 | - | 新浪外汇 |
| ine_sc_fut | INE上海原油期货主力连续收盘(2018-03-26上市) | 元/桶 | 新浪期货(SC0) |
| *_ret | 对数收益率 ln(P_t/P_{t-1}) | - | 计算 |
注意:各市场节假日不同导致的缺失为正常;2020-04-20 WTI 现货 -36.98(负油价),当日收益率 NaN。
us_crude_stocks_kbbl 商业原油库存(千桶) / us_spr_stocks_kbbl 战略储备SPR(千桶) / us_crude_prod_kbd 原油产量(千桶/日)
event_id, event_date, event_type, event_name, direction, expected_duration, description
- event_type ∈ {地缘冲突, OPEC+产量政策, 需求冲击, 库存/供给, 金融/美元, 制裁}
- direction ∈ {利多(+), 利空(-), 双向(~)};expected_duration ∈ {短期(<1月), 中期(1-6月), 长期(>6月)}
- 仅为种子模板(2016~2024公认重大事件),日期请逐条核实并用 LLM 从新闻扩充。
| 列名 | 含义 |
|---|---|
| doc_id / category | 文档ID / 类别(gongwen国务院公文、bumenfile部门文件、otherfile其他) |
| title / pub_date / issuer / doc_number | 标题 / 发布日期 / 发文单位 / 发文字号 |
| url / keyword | 原文链接 / 命中的检索关键词(分号分隔) |
| fulltext / text_len / has_fulltext | 全文 / 长度 / 是否有有效全文(106/128篇为True,其余为gov.cn存根页仅含元数据) |
来源:国务院政策文件库公开检索接口,关键词:能源安全/原油/成品油/油气/天然气,
标题检索。需扩大召回可在 fetch_policy_texts.py 中增加关键词或改 searchfield。
方法:估计窗 [-120,-21] 交易日算均值μ/波动σ;事件窗 [-5,+10];AR=r-μ;z=AR/σ;|z|>2 记异常。
- 明细表:每行 = 事件×资产×相对交易日,含 ret/ar/z/abnormal(画事件窗图直接用)
- 汇总表:每行 = 事件×资产,含 event_day_z、car_0_5、car_0_10、max_abs_z、abnormal_days
验证示例:2019-09-14 沙特布盖格遇袭 Brent 事件日 z=5.27;2020-03-06 沙俄价格战 z=-5.48。
- EIA 美国能源信息署:现货价/库存/产量,历史xls直链(如
eia.gov/dnav/pet/hist_xls/RBRTEd.xls) - 新浪财经:外盘期货、外汇、INE原油期货,JSONP接口
- 国务院政策文件库:
sousuo.www.gov.cn/search-gov/data?t=zhengcelibrary
pip install pandas requests xlrd beautifulsoup4
python fetch_energy_data.py # 1. 更新行情(~1分钟)
python fetch_policy_texts.py # 2. 更新政策(~3分钟,断点续传)
python build_event_study.py # 3. 重算事件研究- 日期无重复、无不可解释的缺口;缺失值均来自各市场节假日差异,未做插值/前向填充(避免伪造价格)
- 唯一非正值:2020-04-20 WTI 现货 -36.98(真实历史负油价,保留);所有 |单日涨跌|>30% 的记录全部对应 2020年3-4月真实行情
- 现货-期货收益率同日相关:WTI 0.92、Brent 0.81(排除2020-03~05极端期),同日对齐正确
- 重要:INE SC 与 Brent 同日相关仅 0.22,但 Brent(T) 与 INE(T+1) 相关 0.60 —— 这是时区/交易时段导致的隔夜传导(INE 白盘消化前夜外盘波动),不是数据错误。 做 INE 事件研究或联动分析时,应使用 Brent 滞后1日对齐,或在报告中说明该传导结构。
- stooq 有 JS 反爬验证,不要用;新浪接口需带
Referer: finance.sina.com.cn - 解析 gov.cn 页面 必须用
html.parser,lxml 会异常截断导致只剩导航栏文字 - 新浪外汇日K每条记录末尾有空字段,需只取前5列
- CSV 用 Excel 打开如出现乱码,选择 UTF-8 编码导入(processed 下均带 BOM 可直接双击打开)