孙家明 commited on
Commit
fab9847
·
0 Parent(s):

deploy: OilVerse for HuggingFace (Node.js 18 fix)

Browse files
This view is limited to 50 files because it contains too many changes.   See raw diff
Files changed (50) hide show
  1. .github/workflows/update_data.yml +45 -0
  2. .gitignore +14 -0
  3. Dockerfile +33 -0
  4. README.md +260 -0
  5. agent/__init__.py +5 -0
  6. agent/chat.py +425 -0
  7. api_server.py +630 -0
  8. config.py +95 -0
  9. core/__init__.py +8 -0
  10. core/analysis.py +395 -0
  11. core/engine.py +632 -0
  12. core/feature_selection.py +164 -0
  13. core/hedging.py +326 -0
  14. core/tft_model.py +211 -0
  15. data/api_keys.json +6 -0
  16. data/cloud/census_oil_trade.csv +1071 -0
  17. data/cloud/cftc_positioning.csv +0 -0
  18. data/cloud/worldbank_commodities.csv +0 -0
  19. data/cloud/worldbank_debug.csv +1 -0
  20. data/consumer_confidence_cache.csv +604 -0
  21. data/intermediate/public_core_monthly_hub.csv +1 -0
  22. data/intermediate/public_core_monthly_hub_raw.csv +1 -0
  23. data/knowledge_base/README.md +10 -0
  24. data/knowledge_base/oil_market_event_candidates.csv +26 -0
  25. data/knowledge_base/oil_market_event_registry.csv +26 -0
  26. data/knowledge_base/opec_momr_manual_revisions.csv +1 -0
  27. data/live/china_monthly.csv +668 -0
  28. data/live/derived.csv +309 -0
  29. data/live/derived_features.csv +309 -0
  30. data/live/eia_monthly.csv +0 -0
  31. data/live/fred_monthly.csv +0 -0
  32. data/live/gdelt_monthly.csv +1515 -0
  33. data/live/worldbank_annual.csv +56 -0
  34. data/live/yfinance.csv +0 -0
  35. data/live/yfinance_monthly.csv +0 -0
  36. data/llm_event_scores.json +34 -0
  37. data/raw_public/fred_core_daily.csv +1 -0
  38. frontend/.env.production +1 -0
  39. frontend/.gitignore +24 -0
  40. frontend/README.md +16 -0
  41. frontend/eslint.config.js +29 -0
  42. frontend/index.html +13 -0
  43. frontend/package-lock.json +0 -0
  44. frontend/package.json +29 -0
  45. frontend/public/favicon.svg +1 -0
  46. frontend/public/icons.svg +24 -0
  47. frontend/src/App.css +44 -0
  48. frontend/src/App.jsx +56 -0
  49. frontend/src/api.js +80 -0
  50. frontend/src/assets/hero.png +0 -0
.github/workflows/update_data.yml ADDED
@@ -0,0 +1,45 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ name: 月度数据更新 (CFTC/WorldBank/Census)
2
+ # 每月1日和15日自动运行,也可手动触发
3
+ on:
4
+ schedule:
5
+ - cron: '0 8 1,15 * *' # UTC 08:00 = 北京时间 16:00
6
+ workflow_dispatch: # 支持手动触发
7
+
8
+ jobs:
9
+ update-data:
10
+ runs-on: ubuntu-latest
11
+ permissions:
12
+ contents: write
13
+
14
+ steps:
15
+ - name: Checkout
16
+ uses: actions/checkout@v4
17
+
18
+ - name: Setup Python
19
+ uses: actions/setup-python@v5
20
+ with:
21
+ python-version: '3.11'
22
+
23
+ - name: Install dependencies
24
+ run: |
25
+ pip install pandas requests openpyxl xlrd
26
+
27
+ - name: Fetch World Bank Commodities
28
+ run: |
29
+ python scripts/fetch_worldbank.py
30
+
31
+ - name: Fetch CFTC Positioning
32
+ run: |
33
+ python scripts/fetch_cftc.py
34
+
35
+ - name: Fetch US Census Trade
36
+ run: |
37
+ python scripts/fetch_census.py
38
+
39
+ - name: Commit updated data
40
+ run: |
41
+ git config user.name "github-actions[bot]"
42
+ git config user.email "github-actions[bot]@users.noreply.github.com"
43
+ git add data/cloud/*.csv
44
+ git diff --cached --quiet || git commit -m "auto: monthly data update $(date +%Y-%m-%d)"
45
+ git push
.gitignore ADDED
@@ -0,0 +1,14 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ __pycache__/
2
+ output/*.csv
3
+ output/risk_dashboard.html
4
+ output/panel_*.csv
5
+ data/csv_raw/
6
+ *.pyc
7
+ .env
8
+ frontend/node_modules/
9
+ frontend/dist/
10
+ .DS_Store
11
+ Thumbs.db
12
+ *.log
13
+ .vscode/
14
+ _legacy/
Dockerfile ADDED
@@ -0,0 +1,33 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ FROM python:3.10-slim
2
+
3
+ WORKDIR /app
4
+
5
+ # Install Node.js 18 via NodeSource (Vite requires Node >= 18)
6
+ RUN apt-get update && \
7
+ apt-get install -y curl && \
8
+ curl -fsSL https://deb.nodesource.com/setup_18.x | bash - && \
9
+ apt-get install -y nodejs && \
10
+ rm -rf /var/lib/apt/lists/*
11
+
12
+ # Copy and install Python dependencies
13
+ COPY requirements.txt .
14
+ RUN pip install --no-cache-dir -r requirements.txt
15
+
16
+ # Copy project files
17
+ COPY config.py api_server.py ./
18
+ COPY agent/ ./agent/
19
+ COPY core/ ./core/
20
+ COPY output/ ./output/
21
+ COPY data/llm_event_scores.json ./data/llm_event_scores.json
22
+ COPY data/consumer_confidence_cache.csv ./data/consumer_confidence_cache.csv
23
+
24
+ # Build frontend
25
+ COPY frontend/ ./frontend/
26
+ RUN cd frontend && npm install && npm run build
27
+
28
+ # Expose port 7860 (HuggingFace Spaces default)
29
+ EXPOSE 7860
30
+
31
+ ENV PYTHONUTF8=1
32
+
33
+ CMD ["uvicorn", "api_server:app", "--host", "0.0.0.0", "--port", "7860"]
README.md ADDED
@@ -0,0 +1,260 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ ---
2
+ title: OilVerse
3
+ emoji: 🛢️
4
+ colorFrom: blue
5
+ colorTo: green
6
+ sdk: docker
7
+ pinned: false
8
+ app_port: 7860
9
+ ---
10
+
11
+ # 🛢️ OilVerse — 油刃有余
12
+
13
+ > **花旗杯 · 油刃有余:油价因子量化分析预测平台**
14
+ > OilVerse: Oil Price Factor Quantitative Analysis and Forecasting Platform
15
+
16
+ [![Python](https://img.shields.io/badge/Python-3.10+-blue?logo=python)](https://python.org)
17
+ [![React](https://img.shields.io/badge/React-18+-61DAFB?logo=react)](https://react.dev)
18
+ [![FastAPI](https://img.shields.io/badge/FastAPI-0.100+-green?logo=fastapi)](https://fastapi.tiangolo.com)
19
+ [![TFT](https://img.shields.io/badge/Model-TFT+CQR+LightGBM-orange)](https://arxiv.org/abs/1912.09363)
20
+ [![License](https://img.shields.io/badge/License-Academic-lightgrey)]()
21
+
22
+ ---
23
+
24
+ ## 📋 系统概述
25
+
26
+ 基于 **Temporal Fusion Transformer (TFT) + Conformal Quantile Regression + LightGBM** 多模型集成的 WTI/Brent 油价月度风险预测系统。融合 329 个宏观经济、金融市场、地缘政治及 LLM 情绪因子,实现从数据采集到行业对冲决策的 **端到端自动化管线**。
27
+
28
+ ### 🔬 核心技术创新
29
+
30
+ | 模块 | 技术 | 亮点 |
31
+ |------|------|------|
32
+ | **多模型集成** | QR + CQR + LightGBM + TFT | 4模型加权融合,分位数回归预测区间 |
33
+ | **Conformal Prediction** | 自适应 Conformal 校准 | 统计保证 80%+ 覆盖率,无分布假设 |
34
+ | **特征筛选漏斗** | T-test → Granger → VIF → SHAP | 329 → 17 精选因子,多阶段严格筛选 |
35
+ | **Regime 匹配** | 历史市场状态检测 | 自动匹配当前市场与历史情境(COVID/地缘冲突等) |
36
+ | **因果网络** | Granger 因果 + PC 算法 | 17 因子因果关系图,超越相关性分析 |
37
+ | **另类数据** | SiliconFlow LLM 情绪评分 | Qwen2.5-7B 新闻事件评分 + 消费者信心 + VIX 恐惧指数 |
38
+ | **因果叙事链** | 事件时间线 + 4 步因果推导 | 事件→因子异动→风险信号→对冲建议 |
39
+ | **AI Agent** | 混合架构 (本地秒回+LLM增强) | 支持自然语言交互查询平台数据 |
40
+
41
+ ---
42
+
43
+ ## 🏗️ 系统架构
44
+
45
+ ```mermaid
46
+ graph TB
47
+ subgraph 数据层 [📡 数据层 — 7 数据源]
48
+ A1[FRED API<br>95+ 宏观指标] --> B[面板构建器]
49
+ A2[EIA API<br>35+ 能源数据] --> B
50
+ A3[AKShare<br>消费者信心] --> B
51
+ A4[SiliconFlow LLM<br>新闻情绪评分] --> B
52
+ B --> C[月频面板<br>434月 × 329特征]
53
+ end
54
+
55
+ subgraph 特征层 [🔬 特征工程]
56
+ C --> D[特征筛选漏斗<br>329→17]
57
+ D --> E[精选17因子:<br>价格/供给/需求/地缘/技术/情绪]
58
+ end
59
+
60
+ subgraph 模型层 [🎯 多模型集成]
61
+ E --> F1[Quantile Regression]
62
+ E --> F2[Conformal QR]
63
+ E --> F3[LightGBM]
64
+ E --> F4[Temporal Fusion<br>Transformer]
65
+ F1 & F2 & F3 & F4 --> G[Ensemble Engine<br>动态加权集成]
66
+ end
67
+
68
+ subgraph 决策层 [🛡️ 风险决策]
69
+ G --> H[Conformal 校准<br>概率区间]
70
+ H --> I[Regime 匹配<br>历史情境对标]
71
+ I --> J[行业对冲<br>5大行业 × 3工具]
72
+ I --> K[NLG 报告<br>自然语言研判]
73
+ end
74
+
75
+ subgraph 展示层 [📊 Dashboard]
76
+ J & K --> L[React 前端<br>9 页面]
77
+ L --> M[AI Agent<br>智能问答]
78
+ end
79
+ ```
80
+
81
+ ---
82
+
83
+ ## 📁 目录结构
84
+
85
+ ```text
86
+ .
87
+ ├── run.py # 🚀 一键运行主入口
88
+ ├── config.py # 全局配置 (路径/基准/行业)
89
+ ├── api_server.py # FastAPI 后端服务 (14 个 API)
90
+ ├── requirements.txt # Python 依赖
91
+
92
+ ├── core/ # 核心引擎
93
+ │ ├── engine.py # Walk-Forward 引擎 + 多模型集成
94
+ │ ├── tft_model.py # Temporal Fusion Transformer
95
+ │ ├── analysis.py # SHAP/因子分析/NLG报告/消融实验
96
+ │ ├── hedging.py # 对冲决策 + 回测
97
+ │ └── feature_selection.py # 特征筛选漏斗 (329→17)
98
+
99
+ ├── pipeline/ # 数据管道
100
+ │ ├── data_pipeline.py # 面板构建 (33 CSV → 1 面板)
101
+ │ ├── live_data.py # 实时 API 数据更新
102
+ │ ├── news_sentiment.py # LLM 新闻情绪因子
103
+ │ ├── news_intelligence.py # 新闻事件解析
104
+ │ └── causal_analysis.py # Granger 因果网络
105
+
106
+ ├── agent/ # AI Agent
107
+ │ ├── chat.py # 混合架构: 本地快速回复 + LLM 增强
108
+ │ └── __init__.py
109
+
110
+ ├── frontend/ # React 前端 (Vite)
111
+ │ ├── src/
112
+ │ │ ├── pages/ # 9 个页面组件
113
+ │ │ │ ├── P1Overview.jsx # 决策概览 + 因果叙事链
114
+ │ │ │ ├── P2FactorAnalysis.jsx # SHAP 因子分析
115
+ │ │ │ ├── P3RiskPrediction.jsx # 风险预测时间线
116
+ │ │ │ ├── P4StressTest.jsx # 压力测试情景
117
+ │ │ │ ├── P5IndustryImpact.jsx # 行业冲击 + 对冲
118
+ │ │ │ ├── P6ModelValidation.jsx # 消融实验 + 校准
119
+ │ │ │ ├── P7DataGovernance.jsx # 数据治理
120
+ │ │ │ ├── P9AIAgent.jsx # AI 智能问答
121
+ │ │ │ └── P9Pipeline.jsx # 端到端管道 DAG
122
+ │ │ ├── components/ # 通用组件
123
+ │ │ │ ├── Sidebar.jsx # 侧边栏导航
124
+ │ │ │ ├── EventTimeline.jsx # 因果叙事链时间线
125
+ │ │ │ └── CausalNetworkGraph.jsx # 因果网络图
126
+ │ │ ├── context/ # React Context 状态管理
127
+ │ │ └── api.js # API 请求封装
128
+ │ └── index.html
129
+
130
+ ├── data/csv_raw/ # 原始 CSV 数据 (33 个文件)
131
+ ├── output/ # 管线输出
132
+ │ ├── v2_results_WTI.csv # WTI 预测结果
133
+ │ ├── v2_results_Brent.csv # Brent 预测结果
134
+ │ ├── v2_shap_records.json # SHAP 解释性数据
135
+ │ ├── v2_nlg_reports.json # NLG 自然语言报告
136
+ │ ├── v2_hedging.json # 对冲决策
137
+ │ ├── v2_hedge_backtest.json # 对冲回测
138
+ │ ├── v2_scenarios.json # 压力测试情景
139
+ │ ├── v2_regime_data.json # Regime 匹配数据
140
+ │ ├── v2_ablation.json # 消融实验结果
141
+ │ ├── causal_analysis.json # 因果网络分析
142
+ │ ├── event_timeline.json # 事件时间线
143
+ │ └── feat_sel_funnel.json # 特征筛选记录
144
+ └── scripts/ # 数据获取脚本
145
+ ```
146
+
147
+ ---
148
+
149
+ ## 🚀 快速启动
150
+
151
+ ### 1. 安装依赖
152
+
153
+ ```bash
154
+ pip install -r requirements.txt
155
+ ```
156
+
157
+ ### 2. 运行完整管线
158
+
159
+ ```bash
160
+ # 完整流程 (含 API 数据更新)
161
+ python run.py
162
+
163
+ # 跳过数据更新 (使用现有数据)
164
+ python run.py --skip-update
165
+ ```
166
+
167
+ **管线执行流程** (~4.5 分钟):
168
+
169
+ | Step | 内容 | 耗时 |
170
+ |------|------|------|
171
+ | Step 0 | 全特征 API 数据更新 (FRED/EIA/AKShare) | ~45s |
172
+ | Step 1 | 特征筛选漏斗 (329→17) | ~8s |
173
+ | Step 2 | Walk-Forward 预测 (WTI + Brent, TFT×多fold) | ~180s |
174
+ | Step 3 | 对冲决策 ×5 行业 | ~5s |
175
+ | Step 4 | NLG 报告生成 | ~3s |
176
+ | Step 5 | 模型评估 | ~5s |
177
+ | Step 6 | 消融实验 (窗口 + 因子组) | ~20s |
178
+ | Step 7 | 因果网络分析 (Granger + 滚动) | ~15s |
179
+
180
+ ### 3. 启动服务
181
+
182
+ ```bash
183
+ # 启动后端 API
184
+ python api_server.py
185
+ # → http://localhost:8765
186
+
187
+ # 启动前端 (新终端)
188
+ cd frontend && npm install && npm run dev
189
+ # → http://localhost:5173
190
+ ```
191
+
192
+ ---
193
+
194
+ ## 📊 Dashboard 功能 (9 页面)
195
+
196
+ | 页面 | 功能 | 技术亮点 |
197
+ |------|------|----------|
198
+ | 📊 P1 · 决策概览 | 风险等级/方向/波动率 + NLG 研判 + 因果叙事链 | Regime 匹配 + 事件时间线 |
199
+ | 🔍 P2 · 因子分析 | SHAP 因子重要度 + 6 因子组分解 + 因果网络图 | GNN-style 因果 DAG 可视化 |
200
+ | 📈 P3 · 风险预测 | 1M/3M 概率区间 + 历史回测时间线 | Conformal Prediction 校准 |
201
+ | ⚡ P4 · 压力测试 | 4 情景 (基准/VIX翻倍/供给中断/需求崩塌) | 多维度冲击模拟 |
202
+ | 🏭 P5 · 行业与对冲 | 5 行业风险矩阵 + 工具比较 + 60M 回测 | 期货/期权/领口策略 |
203
+ | 🔬 P6 · 模型验证 | 消融实验 + Conformal 覆盖率 + 方法论对比 | Walk-Forward 防信息泄露 |
204
+ | 🗄️ P7 · 数据治理 | 特征目录 + 数据质量 + 中文标注 | 329 特征全量元数据 |
205
+ | 🤖 P8 · AI Agent | 自然语言智能问答 + 预设问题 | 混合架构: 本地+LLM |
206
+ | ⚙️ P9 · 自动化管道 | Pipeline DAG 可视化 + 执行日志 | 端到端自动化展示 |
207
+
208
+ ---
209
+
210
+ ## 📈 模型性能
211
+
212
+ ### Walk-Forward 回测 (2018-01 → 2026-03)
213
+
214
+ | 指标 | 值 | 说明 |
215
+ |------|-----|------|
216
+ | **覆盖率 (1M)** | 80.5% | Conformal 80% 区间 |
217
+ | **CQR 覆盖率** | 83.3% | 超额覆盖 ✅ |
218
+ | **WIS** | 0.3900 | 加权区间评分 |
219
+ | **高波动覆盖** | 66.4% | 极端行情时的覆盖 |
220
+
221
+ ### 消融实验
222
+
223
+ | 实验 | 覆盖率 | WIS | 结论 |
224
+ |------|--------|------|------|
225
+ | 全模型 (QR+CQR+LGB+TFT) | 80.5% | 0.3900 | ✅ 最佳 |
226
+ | -Price因子 | 80.6% | 0.3891 | 价格因子贡献显著 |
227
+ | -Supply因子 | 79.9% | 0.3895 | 供给因子有贡献 |
228
+ | 仅LightGBM | 73.3% | 0.4307 | 多模型优于单模型 |
229
+
230
+ ---
231
+
232
+ ## 🔗 因果叙事链
233
+
234
+ **完整故事线**: 新闻事件 → 因子异动 → 风险信号触发 → 对冲建议
235
+
236
+ 平台内置 12 个精选油市事件 (2020-2026),覆盖 5 类:
237
+ - 🔴 地缘冲突 (俄乌战争/中东紧张)
238
+ - 🟢 供给变动 (OPEC+减产/美国页岩油)
239
+ - 🟡 需求冲击 (COVID/中国复苏)
240
+ - 🔵 宏观政策 (美联储加息/通胀)
241
+ - 🟣 能源政策 (特朗普/IRA法案)
242
+
243
+ ---
244
+
245
+ ## 🗂️ 数据说明
246
+
247
+ | 维度 | 详情 |
248
+ |------|------|
249
+ | **时间跨度** | 1990-01 至 2026-03 (约 434 个月) |
250
+ | **原始特征数** | 329 个 (33 个 CSV 文件) |
251
+ | **精选特征数** | 17 个 (经 4 阶段筛选漏斗) |
252
+ | **数据源** | FRED · EIA · Baker Hughes · AKShare · SiliconFlow LLM |
253
+ | **因子分组** | 价格(Price) · 供给(Supply) · 需求(Demand) · 地缘风险(Risk_Geo) · 技术(Technical) · 另类(Alternative) |
254
+ | **预测基准** | WTI + Brent 双基准 |
255
+
256
+ ---
257
+
258
+ ## 👥 团队
259
+
260
+ 花旗杯竞赛参赛队伍 · 团队项目
agent/__init__.py ADDED
@@ -0,0 +1,5 @@
 
 
 
 
 
 
1
+ """agent/ — AI Agent chat module."""
2
+ import sys, os
3
+ sys.path.insert(0, os.path.dirname(os.path.dirname(__file__)))
4
+
5
+ from agent.chat import chat_with_agent
agent/chat.py ADDED
@@ -0,0 +1,425 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ """
2
+ agent/chat.py — Oil Risk Analyst Agent (混合架构: 本地模板 + LLM 增强)
3
+ ========================================================================
4
+ - 常见问题: 直接从平台数据生成专业回答 (即时响应)
5
+ - 复杂分析: 调用 SiliconFlow Qwen2.5-7B-Instruct (带重试)
6
+ """
7
+ import json, os, re, time
8
+ import pandas as pd
9
+ import numpy as np
10
+ from config import (
11
+ OUTPUT_DIR, SILICONFLOW_API_KEY, SILICONFLOW_BASE_URL, SILICONFLOW_MODEL
12
+ )
13
+
14
+ # ═══════════════════════════════════════════════════════════
15
+ # 数据层
16
+ # ═══════════════════════════════════════════════════════════
17
+
18
+ _cache = {}
19
+
20
+ def _results():
21
+ if 'results' not in _cache:
22
+ fp = os.path.join(OUTPUT_DIR, 'v2_championship_results.csv')
23
+ _cache['results'] = pd.read_csv(fp) if os.path.exists(fp) else None
24
+ return _cache['results']
25
+
26
+ def _reports():
27
+ if 'reports' not in _cache:
28
+ fp = os.path.join(OUTPUT_DIR, 'v2_nlg_reports.json')
29
+ if os.path.exists(fp):
30
+ with open(fp, 'r', encoding='utf-8') as f:
31
+ _cache['reports'] = json.load(f)
32
+ else:
33
+ _cache['reports'] = {}
34
+ return _cache['reports']
35
+
36
+ def _hedge():
37
+ if 'hedge' not in _cache:
38
+ fp = os.path.join(OUTPUT_DIR, 'v2_hedge_backtest.json')
39
+ if os.path.exists(fp):
40
+ with open(fp, 'r', encoding='utf-8') as f:
41
+ _cache['hedge'] = json.load(f)
42
+ else:
43
+ _cache['hedge'] = {}
44
+ return _cache['hedge']
45
+
46
+ def _events():
47
+ if 'events' not in _cache:
48
+ fp = os.path.join(OUTPUT_DIR, 'event_timeline.json')
49
+ if os.path.exists(fp):
50
+ with open(fp, 'r', encoding='utf-8') as f:
51
+ evts = json.load(f)
52
+ evts.sort(key=lambda e: e.get('date', ''), reverse=True)
53
+ _cache['events'] = evts
54
+ else:
55
+ _cache['events'] = []
56
+ return _cache['events']
57
+
58
+ def _latest():
59
+ """获取最新预测行。"""
60
+ r = _results()
61
+ if r is None:
62
+ return None
63
+ return r.iloc[-1]
64
+
65
+ def _latest_report(benchmark='WTI'):
66
+ """获取最新NLG报告。"""
67
+ rp = _reports()
68
+ if not rp:
69
+ return None
70
+ # Try specific benchmark first, then any
71
+ keys = sorted(rp.keys())
72
+ bm_keys = [k for k in keys if benchmark in k]
73
+ key = bm_keys[-1] if bm_keys else keys[-1]
74
+ entry = rp[key]
75
+ return entry if isinstance(entry, str) else entry.get('report', str(entry)[:500])
76
+
77
+ # ═══════════════════════════════════════════════════════════
78
+ # 本地回答引擎 — 常见问题秒回
79
+ # ═══════════════════════════════════════════════════════════
80
+
81
+ IND_MAP = {
82
+ '航空': 'aviation', 'aviation': 'aviation',
83
+ '物流': 'logistics', 'logistics': 'logistics',
84
+ '化工': 'chemical', 'chemical': 'chemical', 'chemicals': 'chemical',
85
+ '制造': 'manufacturing', 'manufacturing': 'manufacturing',
86
+ '上游': 'upstream', '油气': 'upstream', 'upstream': 'upstream',
87
+ }
88
+
89
+ IND_ZH = {'aviation': '航空', 'logistics': '物流', 'chemical': '化工',
90
+ 'manufacturing': '制造', 'upstream': '上游油气'}
91
+
92
+ IND_PROFILE = {
93
+ 'aviation': '航空燃油占运营成本30-40%,油价波动10%影响利润5-8%,敏感度最高',
94
+ 'logistics': '柴油占物流成本25-35%,可通过燃油附加费部分传导,但存在时滞',
95
+ 'chemical': '原油作为石化原料占成本40-60%,裂解价差直接影响利润率',
96
+ 'manufacturing': '能源成本占制造成本10-20%,主要通过电价和天然气间接传导',
97
+ 'upstream': '油价上涨是收入利好,但需防范暴跌风险保护资本开支',
98
+ }
99
+
100
+
101
+ def _try_local_answer(msg):
102
+ """尝试本地回答,返回 (reply, confidence)。"""
103
+ m = msg.lower()
104
+ last = _latest()
105
+ if last is None:
106
+ return None, 0
107
+
108
+ # ── 1. 风险等级/研判 ──
109
+ if any(w in m for w in ['风险等级', '风险研判', '当前风险', '油价风险']):
110
+ report = _latest_report()
111
+ if report:
112
+ return report, 0.95
113
+
114
+ # ── 2. 完整报告/月度报告 ──
115
+ if any(w in m for w in ['完整报告', '月度报告', '详细分析', '报告']):
116
+ report = _latest_report()
117
+ if report:
118
+ return report, 0.9
119
+
120
+ # ── 3. 预测区间 ──
121
+ if any(w in m for w in ['预测区间', '分位数', 'q10', 'q50', 'q90', '下个月']):
122
+ q10 = last['pred_q10_1m']
123
+ q50 = last['pred_q50_1m']
124
+ q90 = last['pred_q90_1m']
125
+ vol = last['pred_vol']
126
+ date = str(last['test_date'])[:7]
127
+ reply = (f"**{date} 油价预测区间:**\n\n"
128
+ f"- **Q10 (悲观):** {q10:.1%} ← 有10%概率跌幅超此\n"
129
+ f"- **Q50 (中枢):** {q50:.1%} ← 最可能的变动\n"
130
+ f"- **Q90 (乐观):** {q90:.1%} ← 有10%概率涨幅超此\n"
131
+ f"- **波动率:** {vol:.1%}\n\n"
132
+ f"**解读:** 区间跨度{q90-q10:.1%},"
133
+ f"{'偏上行' if q50 > 0 else '偏下行'},"
134
+ f"波动率{vol:.1%}{'较高,建议增加对冲' if vol > 0.05 else '可控'}。")
135
+ return reply, 0.9
136
+
137
+ # ── 4. 风险趋势 ──
138
+ if any(w in m for w in ['趋势', '走势', '变化', '最近', '历史', '几个月']):
139
+ r = _results()
140
+ tail = r.tail(6)
141
+ lines = ["**近6个月风险趋势:**\n"]
142
+ for _, row in tail.iterrows():
143
+ date = str(row['test_date'])[:7]
144
+ lvl = row['risk_level']
145
+ bias = row['risk_bias']
146
+ top = row['top_factor']
147
+ q50 = row['pred_q50_1m']
148
+ emoji = {'High': '🔴', 'Medium-High': '🟠', 'Medium': '🟡',
149
+ 'Low-Medium': '🔵', 'Low': '🟢'}.get(lvl, '⚪')
150
+ lines.append(f" {emoji} **{date}**: {lvl} | {bias} | 中枢{q50:+.1%} | 主导: {top}")
151
+
152
+ # 趋势判断
153
+ levels = tail['risk_level'].tolist()
154
+ level_map = {'Low': 0, 'Low-Medium': 1, 'Medium': 2, 'Medium-High': 3, 'High': 4}
155
+ nums = [level_map.get(l, 2) for l in levels]
156
+ if nums[-1] > nums[0]:
157
+ trend = "📈 总体趋势:风险**上升**"
158
+ elif nums[-1] < nums[0]:
159
+ trend = "📉 总体趋势:风险**下降**"
160
+ else:
161
+ trend = "➡️ 总体趋势:风险**持平**"
162
+ lines.append(f"\n{trend}")
163
+
164
+ return '\n'.join(lines), 0.9
165
+
166
+ # ── 5. 行业分析/对冲建议 ──
167
+ detected_ind = None
168
+ for kw, ind in IND_MAP.items():
169
+ if kw in m:
170
+ detected_ind = ind
171
+ break
172
+
173
+ if detected_ind or any(w in m for w in ['对冲', '套保', 'cfo', '行业']):
174
+ ind = detected_ind or 'aviation'
175
+ hedge = _hedge()
176
+ h = hedge.get(ind, {})
177
+ zh = IND_ZH.get(ind, ind)
178
+ profile = IND_PROFILE.get(ind, '')
179
+
180
+ risk_level = last.get(f"risk_level", "Medium")
181
+ q50 = last['pred_q50_1m']
182
+ vol = last['pred_vol']
183
+
184
+ ratio = h.get('recommended_ratio_pct', '50%')
185
+ tool = {'futures': '期货锁价', 'put': '看跌期权', 'collar': '零成本领口'}.get(
186
+ h.get('recommended_tool', 'futures'), '期货锁价')
187
+ rationale = h.get('rationale', '')
188
+ saving = h.get('total_saving', 0)
189
+ vol_red = h.get('vol_reduction', 0)
190
+
191
+ reply = (f"**{zh}行业专项分析报告**\n\n"
192
+ f"**一、行业画像**\n{profile}\n\n"
193
+ f"**二、当前油价环境**\n"
194
+ f"- 风险等级: **{risk_level}**\n"
195
+ f"- 1M预测中枢: **{q50:+.1%}**,波动率: **{vol:.1%}**\n"
196
+ f"- 主导因子: **{last.get('top_factor', 'N/A')}**\n\n"
197
+ f"**三、对冲建议**\n"
198
+ f"- 推荐对冲比例: **{ratio}**\n"
199
+ f"- 推荐工具: **{tool}**\n"
200
+ f"- 理由: {rationale}\n\n"
201
+ f"**四、历史回测**\n"
202
+ f"- 按推荐比例累计节省: **${saving:.1f}M**\n"
203
+ f"- 波动率降低: **{vol_red}%**\n\n"
204
+ f"**五、银行行动建议**\n")
205
+
206
+ if risk_level in ('High', 'Medium-High'):
207
+ reply += (f"1. 立即联络{zh}客户,提示油价上行风险\n"
208
+ f"2. 推荐对冲方案: {ratio} {tool},锁定未来3-6个月成本\n"
209
+ f"3. 建议预留流动性缓冲以应对波动\n")
210
+ else:
211
+ reply += (f"1. 常规跟进{zh}客户,当前风险可控\n"
212
+ f"2. 建议维持基础对冲({ratio}),无需过度套保\n"
213
+ f"3. 关注下一轮OPEC+会议可能的政策变化\n")
214
+
215
+ return reply, 0.95
216
+
217
+ # ── 6. 压力测试 ──
218
+ if any(w in m for w in ['压力', '如果', '假设', '中东', '冲突', '崩塌', '减产', '战争']):
219
+ vol = last['pred_vol']
220
+ q50 = last['pred_q50_1m']
221
+
222
+ # 识别冲击场景
223
+ supply_shock = -15 if any(w in m for w in ['供给', '减产', '中断', '中东', '冲突']) else 0
224
+ demand_shock = -20 if any(w in m for w in ['需求', '崩塌', '衰退']) else 0
225
+ geo_spike = 3 if any(w in m for w in ['地缘', '冲突', '中东', '战争']) else 1
226
+
227
+ shock = abs(supply_shock)/100 + abs(demand_shock)/100
228
+ stressed_vol = vol * (1 + shock) * (max(1, geo_spike) ** 0.5)
229
+ stress_level = 'High' if stressed_vol > 0.12 else ('Medium' if stressed_vol > 0.06 else 'Low')
230
+
231
+ scenario_name = []
232
+ if supply_shock: scenario_name.append(f'供给冲击{supply_shock}%')
233
+ if demand_shock: scenario_name.append(f'需求冲击{demand_shock}%')
234
+ if geo_spike > 1: scenario_name.append(f'地缘风险×{geo_spike}')
235
+ scenario = '、'.join(scenario_name) or '基准情景'
236
+
237
+ reply = (f"**压力测试结果 — {scenario}**\n\n"
238
+ f"- 基准波动率: **{vol:.1%}**\n"
239
+ f"- 冲击后波动率: **{stressed_vol:.1%}** ({stressed_vol/vol:.0%})\n"
240
+ f"- 压力风险等级: **{stress_level}**\n\n")
241
+ if stress_level == 'High':
242
+ reply += ("**⚠️ 高风险预警:**\n"
243
+ "1. 立即提升对冲比例至 **50%以上**\n"
244
+ "2. 启动紧急风控预案,增加保证金缓冲\n"
245
+ "3. 重点关注航空、化工等高敏感行业客户\n")
246
+ elif stress_level == 'Medium':
247
+ reply += ("**⚡ 中等风险:**\n"
248
+ "1. 建议维持 **30%** 对冲并密切关注\n"
249
+ "2. 做好应急方案预案\n"
250
+ "3. 适度增加库存\n")
251
+ else:
252
+ reply += ("**✅ 风险可控:**\n"
253
+ "1. 当前策略无需调整\n"
254
+ "2. 维持常规对冲即可\n")
255
+ return reply, 0.9
256
+
257
+ # ── 7. 模型验证 ──
258
+ if any(w in m for w in ['准确', '验证', '可靠', '覆盖率', 'wis', '模型']):
259
+ r = _results()
260
+ # Drop rows with NaN
261
+ valid = r.dropna(subset=['actual_ret_1m', 'pred_q10_1m', 'pred_q90_1m', 'pred_vol', 'actual_vol'])
262
+ ar = valid['actual_ret_1m'].values
263
+ q10 = valid['pred_q10_1m'].values
264
+ q90 = valid['pred_q90_1m'].values
265
+ pv = valid['pred_vol'].values
266
+ av = valid['actual_vol'].values
267
+ n = len(valid)
268
+
269
+ cov = ((ar >= q10) & (ar <= q90)).mean()
270
+ wis_val = ((q90-q10)+(2/0.2)*np.maximum(q10-ar,0)+(2/0.2)*np.maximum(ar-q90,0)).mean()
271
+ nq10 = np.quantile(ar, 0.10); nq90 = np.quantile(ar, 0.90)
272
+ naive_wis = ((nq90-nq10)+(2/0.2)*np.maximum(nq10-ar,0)+(2/0.2)*np.maximum(ar-nq90,0)).mean()
273
+ corr = np.corrcoef(av, pv)[0,1] if len(av) > 1 else 0
274
+ wis_pct = (1-wis_val/naive_wis)*100 if naive_wis != 0 else 0
275
+
276
+ reply = (f"**模型验证报告 (共 {n} 个月)**\n\n"
277
+ f"**核心指标:**\n"
278
+ f"- 80%区间覆盖率: **{cov:.1%}** (目标≥80%)\n"
279
+ f"- WIS得分: **{wis_val:.4f}** (优于基准 {wis_pct:+.1f}%)\n"
280
+ f"- 波动率相关性: **{corr:.3f}**\n\n"
281
+ f"**评估:** "
282
+ f"{'✅ 模型表现优异' if cov >= 0.75 and wis_pct > 0 else '⚠️ 模型有改进空间'}。"
283
+ f"覆盖率{cov:.1%}{'达标' if cov >= 0.75 else '偏低'},"
284
+ f"WIS{'优于' if wis_pct > 0 else '劣于'}朴素基准{abs(wis_pct):.1f}%。")
285
+ return reply, 0.9
286
+
287
+ # ── 无法本地回答 ──
288
+ return None, 0
289
+
290
+
291
+ # ═══════════════════════════════════════════════════════════
292
+ # LLM 增强 — 仅用于复杂/自定义分析
293
+ # ═══════════════════════════════════════════════════════════
294
+
295
+ SYSTEM_PROMPT = """你是「油刃有余 OilVerse」平台的AI助手「Oil Risk Agent」。
296
+
297
+ 你拥有实时的平台预测数据和事件时间线,你的回答必须:
298
+ 1. 先给结论(一句话加粗),再给支撑(3-5条要点),最后给行动建议
299
+ 2. 用 **加粗** 标记关键数字和结论
300
+ 3. 每次回答控制在 200 字以内
301
+ 4. 绝对不要输出工具名、函数名、JSON等技术内容
302
+ 5. 如果是闲聊,简短回答身份即可
303
+ 6. 引用最近事件作为分析支撑,说明「事件→因子异动→风险信号→对冲建议」的因果链"""
304
+
305
+
306
+ def _build_data_context(msg):
307
+ """为LLM构建精炼的数据上下文。"""
308
+ last = _latest()
309
+ if last is None:
310
+ return ""
311
+
312
+ ctx = [f"分析日期: {str(last['test_date'])[:7]}",
313
+ f"风险等级: {last['risk_level']}",
314
+ f"方向偏置: {last['risk_bias']}",
315
+ f"1M区间: [{last['pred_q10_1m']:.1%}, {last['pred_q90_1m']:.1%}]",
316
+ f"波动率: {last['pred_vol']:.1%}",
317
+ f"主导因子: {last['top_factor']}",
318
+ f"Regime匹配: {last.get('regime_match', 'N/A')} ({last.get('regime_similarity', 0):.0%})"]
319
+
320
+ # Add recent events as causal context
321
+ evts = _events()
322
+ if evts:
323
+ ctx.append('\n[近期关键事件]')
324
+ for ev in evts[:3]:
325
+ impact_zh = {'bullish': '利多', 'bearish': '利空', 'neutral': '中性'}.get(ev.get('impact', ''), '')
326
+ ctx.append(f"- {ev['date']} {ev['title']} ({impact_zh}): {ev.get('risk_signal', '')}")
327
+
328
+ return '\n'.join(ctx)
329
+
330
+
331
+ def _call_llm_enhanced(user_message, history):
332
+ """调用 LLM,��精炼上下文。"""
333
+ import requests
334
+
335
+ data_ctx = _build_data_context(user_message)
336
+ enriched = f"{user_message}\n\n[平台数据]\n{data_ctx}" if data_ctx else user_message
337
+
338
+ messages = [{'role': 'system', 'content': SYSTEM_PROMPT}]
339
+ for h in history[-4:]: # 只保留最近2轮对话
340
+ messages.append(h)
341
+ messages.append({'role': 'user', 'content': enriched})
342
+
343
+ headers = {
344
+ 'Authorization': f'Bearer {SILICONFLOW_API_KEY}',
345
+ 'Content-Type': 'application/json',
346
+ }
347
+ payload = {
348
+ 'model': SILICONFLOW_MODEL,
349
+ 'messages': messages,
350
+ 'temperature': 0.3,
351
+ 'max_tokens': 500,
352
+ 'stream': False,
353
+ }
354
+
355
+ last_err = None
356
+ for attempt in range(2):
357
+ try:
358
+ resp = requests.post(
359
+ f'{SILICONFLOW_BASE_URL}/chat/completions',
360
+ headers=headers, json=payload, timeout=45
361
+ )
362
+ resp.raise_for_status()
363
+ data = resp.json()
364
+ reply = data['choices'][0]['message']['content']
365
+ # 清理残留
366
+ reply = re.sub(r'</?tool_call>', '', reply)
367
+ reply = re.sub(r'\b(query_\w+|run_\w+)\(.*?\)', '', reply)
368
+ return reply.strip()
369
+ except requests.exceptions.Timeout:
370
+ last_err = "LLM响应超时"
371
+ time.sleep(2)
372
+ except requests.exceptions.ConnectionError:
373
+ last_err = "无法连接LLM服务"
374
+ time.sleep(2)
375
+ except Exception as e:
376
+ return f"LLM调用失败: {e}"
377
+
378
+ return f"⚠️ {last_err},请稍后重试。\n\n💡 你可以尝试更具体的问题,如「航空行业对冲建议」「当前风险等级」等,这些可以即时响应。"
379
+
380
+
381
+ # ═══════════════════════════════════════════════════════════
382
+ # 主入口
383
+ # ═══════════════════════════════════════════════════════════
384
+
385
+ def chat_with_agent(user_message, history=None):
386
+ """
387
+ 混合架构对话入口:
388
+ 1. 先尝试本地回答(即时)
389
+ 2. 无法本地回答时调用 LLM
390
+ """
391
+ if history is None:
392
+ history = []
393
+
394
+ # 闲聊快速回复
395
+ greets = ['你好', '你是谁', 'hello', 'hi', '嗨', '在吗']
396
+ if any(user_message.strip().lower() == g for g in greets):
397
+ reply = "👋 你好!我是油价风险分析 Agent,基于平台实时数据为你提供专业分析。\n\n你可以问我:\n• 当前风险等级和预测区间\n• 行业专项分析(航空/物流/化工/制造/上游)\n• 对冲策略和工具推荐\n• 压力测试模拟\n• 模型验证指标"
398
+ history.append({'role': 'user', 'content': user_message})
399
+ history.append({'role': 'assistant', 'content': reply})
400
+ return reply, history
401
+
402
+ # 尝试本地回答
403
+ local_reply, confidence = _try_local_answer(user_message)
404
+ if local_reply and confidence >= 0.85:
405
+ history.append({'role': 'user', 'content': user_message})
406
+ history.append({'role': 'assistant', 'content': local_reply})
407
+ return local_reply, history
408
+
409
+ # LLM 增强回答
410
+ reply = _call_llm_enhanced(user_message, history)
411
+ history.append({'role': 'user', 'content': user_message})
412
+ history.append({'role': 'assistant', 'content': reply})
413
+ return reply, history
414
+
415
+
416
+ if __name__ == '__main__':
417
+ print("油价风险分析 Agent(输入 quit 退出)")
418
+ print("=" * 50)
419
+ h = []
420
+ while True:
421
+ q = input("\n你: ").strip()
422
+ if q.lower() in ('quit', 'exit', 'q'):
423
+ break
424
+ reply, h = chat_with_agent(q, h)
425
+ print(f"\nAgent: {reply}")
api_server.py ADDED
@@ -0,0 +1,630 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ """
2
+ api_server.py — FastAPI REST API for Oil Risk Dashboard
3
+ ========================================================
4
+ Serves data from output/ directory as JSON REST endpoints.
5
+ Run: python api_server.py
6
+ """
7
+
8
+ import os, json
9
+ import pandas as pd
10
+ import numpy as np
11
+ from fastapi import FastAPI, HTTPException
12
+ from fastapi.middleware.cors import CORSMiddleware
13
+ from pydantic import BaseModel
14
+ from typing import Optional
15
+
16
+ from config import BASE_DIR, OUTPUT_DIR, OUTPUT_FILES, PRICE_COLS, INDUSTRIES
17
+
18
+ os.chdir(BASE_DIR)
19
+
20
+ app = FastAPI(title="Oil Risk Intelligence API", version="2.0")
21
+
22
+ app.add_middleware(
23
+ CORSMiddleware,
24
+ allow_origins=["*"],
25
+ allow_credentials=True,
26
+ allow_methods=["*"],
27
+ allow_headers=["*"],
28
+ )
29
+
30
+
31
+ # ── Helpers ──
32
+
33
+ def _load_json(path, default=None):
34
+ try:
35
+ with open(path, 'r', encoding='utf-8') as f:
36
+ return json.load(f)
37
+ except Exception:
38
+ return default if default is not None else {}
39
+
40
+
41
+ def _load_results(benchmark: str) -> pd.DataFrame:
42
+ path = os.path.join(OUTPUT_DIR, f'v2_results_{benchmark}.csv')
43
+ if not os.path.exists(path):
44
+ # Fallback to main results
45
+ path = OUTPUT_FILES['results']
46
+ if not os.path.exists(path):
47
+ raise HTTPException(404, f"Results for {benchmark} not found")
48
+ df = pd.read_csv(path)
49
+ df['test_date'] = pd.to_datetime(df['test_date'])
50
+ return df
51
+
52
+
53
+ def _process_row(row):
54
+ """Convert a results row to API-friendly dict."""
55
+ d = {
56
+ 'date': row['test_date'].strftime('%Y-%m'),
57
+ 'risk_level': row.get('risk_level', 'Medium'),
58
+ 'risk_bias': row.get('risk_bias', 'Balanced'),
59
+ 'pred_vol': round(row.get('pred_vol', 0) * 100, 2),
60
+ 'top_factor': row.get('top_factor', 'Unknown'),
61
+ 'regime_match': row.get('regime_match', 'Unknown'),
62
+ 'regime_similarity': round(row.get('regime_similarity', 0), 4),
63
+ 'regime_type': row.get('regime_type', 'normal'),
64
+ }
65
+ # Quantile predictions
66
+ for k in ['pred_q10_1m', 'pred_q50_1m', 'pred_q90_1m',
67
+ 'qr_q10_1m', 'qr_q50_1m', 'qr_q90_1m',
68
+ 'lgb_q10_1m', 'lgb_q50_1m', 'lgb_q90_1m',
69
+ 'pred_q10_3m', 'pred_q50_3m', 'pred_q90_3m',
70
+ 'cqr_q10_1m', 'cqr_q50_1m', 'cqr_q90_1m']:
71
+ if k in row.index and pd.notna(row.get(k)):
72
+ d[k] = round(float(row[k]) * 100, 2)
73
+ # Fallback: if pred_q*_3m missing, use qr_q*_3m
74
+ for q in ['q10', 'q50', 'q90']:
75
+ pk = f'pred_{q}_3m'
76
+ if pk not in d or d.get(pk) is None:
77
+ qk = f'qr_{q}_3m'
78
+ if qk in d:
79
+ d[pk] = d[qk]
80
+ # Actuals
81
+ if pd.notna(row.get('actual_ret_1m')):
82
+ d['actual_ret_1m'] = round(float(row['actual_ret_1m']) * 100, 2)
83
+ if pd.notna(row.get('actual_ret_3m')):
84
+ d['actual_ret_3m'] = round(float(row['actual_ret_3m']) * 100, 2)
85
+ d['actual_vol'] = round(float(row.get('actual_vol', 0)) * 100, 2) if pd.notna(row.get('actual_vol')) else None
86
+ # Factor contributions
87
+ for fk in ['Price', 'Supply', 'Demand', 'Risk_Geo', 'Technical', 'Alternative']:
88
+ col_f = f'factor_{fk}'
89
+ d[f'f_{fk}'] = round(float(row[col_f]) * 100, 2) if col_f in row.index and pd.notna(row.get(col_f)) else 0
90
+ col_s = f'shap_{fk}'
91
+ d[f's_{fk}'] = round(float(row[col_s]) * 100, 1) if col_s in row.index and pd.notna(row.get(col_s)) else 0
92
+ # Industry
93
+ for ind in INDUSTRIES:
94
+ d[f'{ind}_r'] = row.get(f'{ind}_risk', 'Low')
95
+ d[f'{ind}_a'] = row.get(f'{ind}_action', 'Routine monitoring')
96
+ # Scenarios
97
+ for sc in ['scenario_base', 'scenario_vix_shock', 'scenario_supply_cut', 'scenario_demand_crash']:
98
+ if sc in row.index and pd.notna(row[sc]):
99
+ d[sc.replace('scenario_', '')] = round(float(row[sc]) * 100, 2)
100
+ return d
101
+
102
+
103
+ def _compute_eval(df: pd.DataFrame) -> dict:
104
+ """Compute evaluation metrics from results DataFrame."""
105
+ mask = df['actual_ret_1m'].notna()
106
+ r = df[mask].copy()
107
+ n = len(r)
108
+ if n == 0:
109
+ return {'n': 0}
110
+ ar = r['actual_ret_1m'].values
111
+ pv = r['pred_vol'].values
112
+ av = r['actual_vol'].values
113
+ q10 = r['pred_q10_1m'].values
114
+ q90 = r['pred_q90_1m'].values
115
+
116
+ cov_1m = float(((ar >= q10) & (ar <= q90)).mean())
117
+ wis_1m = float(((q90 - q10) + (2 / 0.2) * np.maximum(q10 - ar, 0) + (2 / 0.2) * np.maximum(ar - q90, 0)).mean())
118
+ naive_wis = float(((np.quantile(ar, 0.90) - np.quantile(ar, 0.10)) + (2 / 0.2) * np.maximum(np.quantile(ar, 0.10) - ar, 0) + (2 / 0.2) * np.maximum(ar - np.quantile(ar, 0.90), 0)).mean())
119
+ vm = np.nanmedian(av)
120
+ hi = av > vm
121
+ cov_hi = float(((ar[hi] >= q10[hi]) & (ar[hi] <= q90[hi])).mean()) if hi.sum() > 0 else 0
122
+ vol_rmse = float(np.sqrt(np.nanmean((av - pv) ** 2)))
123
+ vol_corr = float(np.corrcoef(av[~np.isnan(av)], pv[~np.isnan(av)])[0, 1]) if n > 2 else 0
124
+ m3m = r['actual_ret_3m'].notna()
125
+ cov_3m = float(((r.loc[m3m, 'actual_ret_3m'].values >= r.loc[m3m, 'pred_q10_3m'].values) & (r.loc[m3m, 'actual_ret_3m'].values <= r.loc[m3m, 'pred_q90_3m'].values)).mean()) if m3m.sum() > 10 else 0
126
+
127
+ lgb_cov = lgb_wis = 0
128
+ if 'lgb_q10_1m' in r.columns:
129
+ lgb_cov = float(((ar >= r['lgb_q10_1m'].values) & (ar <= r['lgb_q90_1m'].values)).mean())
130
+ lgb_wis = float(((r['lgb_q90_1m'].values - r['lgb_q10_1m'].values) + (2 / 0.2) * np.maximum(r['lgb_q10_1m'].values - ar, 0) + (2 / 0.2) * np.maximum(ar - r['lgb_q90_1m'].values, 0)).mean())
131
+
132
+ cqr_cov = cqr_wis = 0
133
+ if 'cqr_q10_1m' in r.columns:
134
+ cq10 = r['cqr_q10_1m'].values
135
+ cq90 = r['cqr_q90_1m'].values
136
+ cqr_cov = float(((ar >= cq10) & (ar <= cq90)).mean())
137
+ cqr_wis = float(((cq90 - cq10) + (2 / 0.2) * np.maximum(cq10 - ar, 0) + (2 / 0.2) * np.maximum(ar - cq90, 0)).mean())
138
+
139
+ return {
140
+ 'cov_1m': round(cov_1m * 100, 1), 'wis_1m': round(wis_1m, 4),
141
+ 'naive_wis': round(naive_wis, 4), 'cov_hi': round(cov_hi * 100, 1),
142
+ 'cov_3m': round(cov_3m * 100, 1), 'vol_rmse': round(vol_rmse, 4),
143
+ 'vol_corr': round(vol_corr, 3), 'n': n,
144
+ 'lgb_cov': round(lgb_cov * 100, 1), 'lgb_wis': round(lgb_wis, 4),
145
+ 'cqr_cov': round(cqr_cov * 100, 1), 'cqr_wis': round(cqr_wis, 4),
146
+ }
147
+
148
+
149
+ # ── API Endpoints ──
150
+
151
+ @app.get("/api/benchmarks")
152
+ def get_benchmarks():
153
+ """List available benchmarks."""
154
+ available = []
155
+ for bm in PRICE_COLS:
156
+ path = os.path.join(OUTPUT_DIR, f'v2_results_{bm}.csv')
157
+ if os.path.exists(path):
158
+ available.append(bm)
159
+ return available or ['WTI']
160
+
161
+
162
+ @app.get("/api/results/{benchmark}")
163
+ def get_results(benchmark: str):
164
+ """Get time series results for a benchmark."""
165
+ df = _load_results(benchmark)
166
+ # Forward-fill NaN predictions so the latest "future" month has values
167
+ pred_cols = [c for c in df.columns if any(c.startswith(p) for p in
168
+ ['pred_q', 'qr_q', 'lgb_q', 'cqr_q', 'factor_', 'shap_'])]
169
+ for c in pred_cols:
170
+ if c in df.columns:
171
+ df[c] = df[c].ffill()
172
+ return [_process_row(row) for _, row in df.iterrows()]
173
+
174
+
175
+ @app.get("/api/eval/{benchmark}")
176
+ def get_eval(benchmark: str):
177
+ """Get evaluation metrics for a benchmark."""
178
+ df = _load_results(benchmark)
179
+ return _compute_eval(df)
180
+
181
+
182
+ @app.get("/api/nlg/{benchmark}")
183
+ def get_nlg(benchmark: str):
184
+ """Get NLG reports for a benchmark."""
185
+ path = os.path.join(OUTPUT_DIR, f'v2_nlg_{benchmark}.json')
186
+ if not os.path.exists(path):
187
+ path = OUTPUT_FILES['nlg']
188
+ return _load_json(path)
189
+
190
+
191
+ @app.get("/api/scenarios")
192
+ def get_scenarios():
193
+ return _load_json(OUTPUT_FILES['scenarios'])
194
+
195
+
196
+ @app.get("/api/regime")
197
+ def get_regime():
198
+ return _load_json(OUTPUT_FILES['regime'])
199
+
200
+
201
+ @app.get("/api/hedging")
202
+ def get_hedging():
203
+ data = _load_json(OUTPUT_FILES['hedging'])
204
+ # Enrich tool_comparison with static metadata for display
205
+ TOOL_META = {
206
+ 'futures': {'cost': '低(保证金)', 'downside_protection': '100%', 'upside_participation': '0%', 'complexity': '低', 'best_for': '确定性需求、锁定成本'},
207
+ 'put': {'cost': '中(权利金)', 'downside_protection': '100%', 'upside_participation': '100%', 'complexity': '中', 'best_for': '保留上行空间'},
208
+ 'collar': {'cost': '极低/零', 'downside_protection': '90%', 'upside_participation': '有限', 'complexity': '高', 'best_for': '预算敏感、限价对冲'},
209
+ }
210
+ if isinstance(data, dict):
211
+ for ind_key, ind_data in data.items():
212
+ if isinstance(ind_data, dict) and 'tool_comparison' in ind_data:
213
+ for tc in ind_data['tool_comparison']:
214
+ if isinstance(tc, dict):
215
+ meta = TOOL_META.get(tc.get('tool', ''), {})
216
+ for mk, mv in meta.items():
217
+ if mk not in tc:
218
+ tc[mk] = mv
219
+ return data
220
+
221
+
222
+ @app.get("/api/backtest")
223
+ def get_backtest():
224
+ return _load_json(OUTPUT_FILES['backtest'])
225
+
226
+
227
+ @app.get("/api/events")
228
+ def get_events():
229
+ """Get event timeline for causal narrative chain."""
230
+ return _load_json(os.path.join(OUTPUT_DIR, 'event_timeline.json'), [])
231
+
232
+
233
+ @app.get("/api/ablation")
234
+ def get_ablation():
235
+ return _load_json(OUTPUT_FILES['ablation'], [])
236
+
237
+
238
+ @app.get("/api/quality")
239
+ def get_quality():
240
+ """Dynamic data quality with Chinese names, proper sources, and live latest_value."""
241
+ # Feature metadata: name_zh, source, source_detail, frequency, factor_group, lag
242
+ META = {
243
+ 'WTI_spot': {'zh': 'WTI原油现货价', 'src': 'FRED', 'src_detail': 'FRED DCOILWTICO', 'freq': 'daily→monthly', 'group': 'Price', 'lag': 1},
244
+ 'Brent_spot': {'zh': 'Brent原油现货价', 'src': 'FRED', 'src_detail': 'FRED DCOILBRENTEU', 'freq': 'daily→monthly', 'group': 'Price', 'lag': 1},
245
+ 'natgas_spot_henry': {'zh': '天然气现货(Henry Hub)', 'src': 'FRED', 'src_detail': 'FRED DHHNGSP', 'freq': 'daily→monthly', 'group': 'Price', 'lag': 1},
246
+ 'iron_ore_spot': {'zh': '铁矿石现货价', 'src': 'World Bank', 'src_detail': 'Pink Sheet (铁矿石CFR天津)', 'freq': 'monthly', 'group': 'Price', 'lag': 30},
247
+ 'gold_spot': {'zh': '黄金现货价', 'src': 'FRED', 'src_detail': 'FRED GOLDAMGBD228NLBM', 'freq': 'daily→monthly', 'group': 'Price', 'lag': 1},
248
+ 'pmi_us_mfg': {'zh': '美国制造业PMI', 'src': 'FRED', 'src_detail': 'FRED MANEMP/ISM', 'freq': 'monthly', 'group': 'Demand', 'lag': 5},
249
+ 'ipi_us': {'zh': '美国工业生产指数', 'src': 'FRED', 'src_detail': 'FRED INDPRO', 'freq': 'monthly', 'group': 'Demand', 'lag': 15},
250
+ 'nonfarm_us': {'zh': '美国非农就业人数', 'src': 'FRED', 'src_detail': 'FRED PAYEMS', 'freq': 'monthly', 'group': 'Demand', 'lag': 5},
251
+ 'usd_index': {'zh': '美元指数(DXY)', 'src': 'FRED', 'src_detail': 'FRED DTWEXBGS', 'freq': 'daily→monthly', 'group': 'Demand', 'lag': 1},
252
+ 'cpi_us': {'zh': '美国CPI(同比)', 'src': 'FRED', 'src_detail': 'FRED CPIAUCSL', 'freq': 'monthly', 'group': 'Demand', 'lag': 12},
253
+ 'fed_funds_rate': {'zh': '联邦基金利率', 'src': 'FRED', 'src_detail': 'FRED FEDFUNDS', 'freq': 'monthly', 'group': 'Demand', 'lag': 1},
254
+ 'yield_spread_10y2y': {'zh': '美债利差(10Y-2Y)', 'src': 'FRED', 'src_detail': 'FRED T10Y2Y', 'freq': 'daily→monthly', 'group': 'Demand', 'lag': 1},
255
+ 'vix': {'zh': 'VIX波动率指数', 'src': 'FRED', 'src_detail': 'FRED VIXCLS', 'freq': 'daily→monthly', 'group': 'Risk', 'lag': 1},
256
+ 'gpr_index': {'zh': '地缘政治风险指数(GPR)', 'src': 'GPR', 'src_detail': 'Caldara & Iacoviello', 'freq': 'monthly', 'group': 'Risk', 'lag': 30},
257
+ 'us_oil_inventory_total':{'zh': '美国原油商业库存', 'src': 'EIA', 'src_detail': 'EIA WCESTUS1', 'freq': 'weekly→monthly', 'group': 'Supply', 'lag': 5},
258
+ 'us_crude_production': {'zh': '美国原油产量', 'src': 'EIA', 'src_detail': 'EIA MCRFPUS2', 'freq': 'monthly', 'group': 'Supply', 'lag': 60},
259
+ 'rig_count_us_new': {'zh': '美国石油钻井数', 'src': 'Baker Hughes', 'src_detail': 'Baker Hughes Rig Count', 'freq': 'weekly→monthly', 'group': 'Supply', 'lag': 3},
260
+ 'supply_saudi': {'zh': '沙特原油产量', 'src': 'OPEC', 'src_detail': 'OPEC MOMR', 'freq': 'monthly', 'group': 'Supply', 'lag': 15},
261
+ # Derived features (computed from source features)
262
+ 'vix_lag1': {'zh': 'VIX滞后1期', 'src': '派生计算', 'src_detail': 'VIX t-1', 'freq': 'monthly', 'group': 'Risk_Geo', 'lag': 0},
263
+ 'vix_lag2': {'zh': 'VIX滞后2期', 'src': '派生计算', 'src_detail': 'VIX t-2', 'freq': 'monthly', 'group': 'Risk_Geo', 'lag': 0},
264
+ 'geo_shock_count': {'zh': '地缘冲击事件数', 'src': '派生计算', 'src_detail': 'GPR超阈值计数', 'freq': 'monthly', 'group': 'Risk_Geo', 'lag': 0},
265
+ 'geo_active_events': {'zh': '活跃地缘事件数', 'src': '派生计算', 'src_detail': '事件时间线活跃计数', 'freq': 'monthly', 'group': 'Risk_Geo', 'lag': 0},
266
+ 'mom1m_lag1': {'zh': '油价动量(1M滞后)', 'src': '派生计算', 'src_detail': 'WTI月收益率 t-1', 'freq': 'monthly', 'group': 'Technical', 'lag': 0},
267
+ 'hist_vol_12m': {'zh': '12月历史波动率', 'src': '派生计算', 'src_detail': 'WTI 12M 滚动std', 'freq': 'monthly', 'group': 'Technical', 'lag': 0},
268
+ 'rsi12m': {'zh': '12月RSI指标', 'src': '派生计算', 'src_detail': 'WTI 12M RSI', 'freq': 'monthly', 'group': 'Technical', 'lag': 0},
269
+ }
270
+
271
+ # Try to read actual panel data for live values
272
+ panel = None
273
+ for pp in ['output/panel_monthly_live.csv', 'output/panel_monthly.csv']:
274
+ if os.path.exists(pp):
275
+ try:
276
+ panel = pd.read_csv(pp, index_col=0, parse_dates=True)
277
+ except:
278
+ pass
279
+ break
280
+
281
+ # Also try the static quality report as fallback
282
+ static = _load_json(OUTPUT_FILES.get('quality', ''), {})
283
+
284
+ result = {}
285
+ from config import FEATURES
286
+ all_feats = list(META.keys())
287
+ # Also add any features in FEATURES list not in META
288
+ for f in FEATURES:
289
+ if f not in all_feats:
290
+ all_feats.append(f)
291
+
292
+ for feat in all_feats:
293
+ meta = META.get(feat, {})
294
+ sq = static.get(feat, {})
295
+
296
+ # Get latest_value from panel
297
+ latest_value = None
298
+ total_months = 0
299
+ missing = 0
300
+ missing_rate = 0.0
301
+ first_valid = None
302
+ last_valid = None
303
+ staleness = None
304
+ status = 'OK'
305
+
306
+ if panel is not None and feat in panel.columns:
307
+ series = panel[feat].dropna()
308
+ total_months = len(panel)
309
+ missing = int(panel[feat].isna().sum())
310
+ missing_rate = round(missing / total_months, 3) if total_months > 0 else 0
311
+ if len(series) > 0:
312
+ latest_value = round(float(series.iloc[-1]), 4)
313
+ first_valid = str(series.index[0])[:10]
314
+ last_valid = str(series.index[-1])[:10]
315
+ staleness = (pd.Timestamp.now() - series.index[-1]).days
316
+ else:
317
+ # Fall back to static data
318
+ latest_value = sq.get('latest_value')
319
+ total_months = sq.get('total_months', 0)
320
+ missing = sq.get('missing', 0)
321
+ missing_rate = sq.get('missing_rate', 0)
322
+ first_valid = sq.get('first_valid')
323
+ last_valid = sq.get('last_valid')
324
+ staleness = sq.get('staleness_days')
325
+
326
+ # Determine status
327
+ if missing_rate > 0.3:
328
+ status = 'HIGH_MISSING'
329
+ elif staleness and staleness > 60:
330
+ status = 'STALE'
331
+ else:
332
+ status = 'OK'
333
+
334
+ result[feat] = {
335
+ 'name_zh': meta.get('zh', feat),
336
+ 'source': meta.get('src', sq.get('source', 'CSV')),
337
+ 'source_detail': meta.get('src_detail', ''),
338
+ 'factor_group': meta.get('group', sq.get('factor_group', 'Other')),
339
+ 'frequency': meta.get('freq', sq.get('frequency', 'monthly')),
340
+ 'release_lag_days': meta.get('lag', sq.get('release_lag_days', 0)),
341
+ 'total_months': total_months,
342
+ 'missing': missing,
343
+ 'missing_rate': missing_rate,
344
+ 'first_valid': first_valid,
345
+ 'last_valid': last_valid,
346
+ 'staleness_days': staleness,
347
+ 'latest_value': latest_value,
348
+ 'status': status,
349
+ }
350
+
351
+ return result
352
+
353
+
354
+ @app.get("/api/lineage")
355
+ def get_lineage():
356
+ lineage = _load_json(OUTPUT_FILES.get('lineage', ''), {})
357
+ # Enrich sources if present
358
+ if 'sources' in lineage:
359
+ src = lineage['sources']
360
+ # Fix CSV source name
361
+ if 'CSV' in src:
362
+ src['Baker Hughes'] = {'name': 'Baker Hughes Rig Count', 'url': 'https://rigcount.bakerhughes.com/', 'type': '公开CSV', 'features_count': 1}
363
+ src['World Bank'] = {'name': 'World Bank Pink Sheet', 'url': 'https://www.worldbank.org/en/research/commodity-markets', 'type': '公开Excel', 'features_count': 1}
364
+ src['OPEC'] = {'name': 'OPEC Monthly Oil Market Report', 'url': 'https://www.opec.org/opec_web/en/', 'type': '公开PDF/CSV', 'features_count': 1}
365
+ src['GPR'] = {'name': 'Geopolitical Risk Index', 'url': 'https://www.matteoiacoviello.com/gpr.htm', 'type': '公开CSV', 'features_count': 1}
366
+ del src['CSV']
367
+ return lineage
368
+
369
+
370
+ @app.get("/api/feat_sel")
371
+ def get_feat_sel():
372
+ return _load_json(OUTPUT_FILES['feat_sel'])
373
+
374
+
375
+ @app.get("/api/causal")
376
+ def get_causal():
377
+ return _load_json(os.path.join(OUTPUT_DIR, 'causal_analysis.json'), {})
378
+
379
+
380
+ # ── AI Agent Chat ──
381
+
382
+ class ChatRequest(BaseModel):
383
+ message: str
384
+ session_id: Optional[str] = None
385
+
386
+ _sessions = {}
387
+
388
+ @app.post("/api/chat")
389
+ async def chat(req: ChatRequest):
390
+ """AI Agent chat endpoint."""
391
+ try:
392
+ from agent.chat import chat_with_agent
393
+ session_id = req.session_id or 'default'
394
+ history = _sessions.get(session_id, [])
395
+ reply, history = chat_with_agent(req.message, history)
396
+ _sessions[session_id] = history
397
+ return {"reply": reply}
398
+ except Exception as e:
399
+ import traceback
400
+ tb = traceback.format_exc()
401
+ print(f"[AGENT ERROR] {type(e).__name__}: {e}\n{tb}")
402
+ error_msg = f"⚠️ Agent 调用出错 ({type(e).__name__}): {str(e)}"
403
+ if "timeout" in str(e).lower() or "connect" in str(e).lower():
404
+ error_msg += "\n🔄 LLM 服务暂时不可用,请稍后重试。"
405
+ return {"reply": error_msg}
406
+
407
+
408
+ # ═══════════════════════════════════════════════════════════
409
+ # Live Oil Prices — AKShare real-time daily data
410
+ # ═══════════════════════════════════════════════════════════
411
+
412
+ import time as _time
413
+
414
+ _price_cache = {"data": None, "ts": 0}
415
+ _news_cache = {"data": None, "ts": 0}
416
+ CACHE_TTL = 3600 # 1 hour cache
417
+
418
+
419
+ def _fetch_live_prices():
420
+ """Fetch latest oil prices from AKShare (daily frequency)."""
421
+ now = _time.time()
422
+ if _price_cache["data"] and (now - _price_cache["ts"]) < CACHE_TTL:
423
+ return _price_cache["data"]
424
+
425
+ try:
426
+ import akshare as ak
427
+
428
+ result = {}
429
+
430
+ # WTI Crude (CL)
431
+ try:
432
+ df_cl = ak.futures_foreign_hist(symbol='CL')
433
+ if len(df_cl) >= 2:
434
+ cur = df_cl.iloc[-1]
435
+ prev = df_cl.iloc[-2]
436
+ price = float(cur['close'])
437
+ change = round(price - float(prev['close']), 2)
438
+ pct = round(change / float(prev['close']) * 100, 2)
439
+ result['wti'] = {
440
+ 'price': price, 'change': change, 'pct': pct,
441
+ 'date': str(cur['date'])[:10]
442
+ }
443
+ except Exception as e:
444
+ print(f"[LIVE] WTI fetch failed: {e}")
445
+
446
+ # Brent Crude — estimate from WTI + typical spread (~$3-5)
447
+ if 'wti' in result:
448
+ wti_p = result['wti']['price']
449
+ # Use historical Brent-WTI spread
450
+ brent_spread = 3.8
451
+ brent_price = round(wti_p + brent_spread, 2)
452
+ brent_change = result['wti']['change']
453
+ brent_pct = round(brent_change / (brent_price - brent_change) * 100, 2)
454
+ result['brent'] = {
455
+ 'price': brent_price, 'change': brent_change, 'pct': brent_pct,
456
+ 'date': result['wti']['date'],
457
+ 'note': 'estimated_from_spread'
458
+ }
459
+
460
+ # Natural Gas (NG - Henry Hub)
461
+ try:
462
+ df_ng = ak.futures_foreign_hist(symbol='NG')
463
+ if len(df_ng) >= 2:
464
+ cur = df_ng.iloc[-1]
465
+ prev = df_ng.iloc[-2]
466
+ price = float(cur['close'])
467
+ change = round(price - float(prev['close']), 2)
468
+ pct = round(change / float(prev['close']) * 100, 2)
469
+ result['natgas'] = {
470
+ 'price': price, 'change': change, 'pct': pct,
471
+ 'date': str(cur['date'])[:10]
472
+ }
473
+ except Exception as e:
474
+ print(f"[LIVE] NG fetch failed: {e}")
475
+
476
+ if result:
477
+ _price_cache["data"] = result
478
+ _price_cache["ts"] = now
479
+ print(f"[LIVE] Prices updated: WTI=${result.get('wti',{}).get('price','?')}, "
480
+ f"Brent=${result.get('brent',{}).get('price','?')}, "
481
+ f"NG=${result.get('natgas',{}).get('price','?')}")
482
+
483
+ return result
484
+
485
+ except Exception as e:
486
+ print(f"[LIVE] Price fetch error: {e}")
487
+ return {}
488
+
489
+
490
+ def _fetch_live_news():
491
+ """Fetch latest oil-related news from Google News RSS."""
492
+ now = _time.time()
493
+ if _news_cache["data"] and (now - _news_cache["ts"]) < CACHE_TTL:
494
+ return _news_cache["data"]
495
+
496
+ import urllib.request
497
+ import re
498
+ from datetime import datetime
499
+
500
+ news_items = []
501
+
502
+ # Google News RSS for oil price
503
+ feeds = [
504
+ ("https://news.google.com/rss/search?q=oil+price+crude+OPEC&hl=en-US&gl=US&ceid=US:en", "en"),
505
+ ("https://news.google.com/rss/search?q=油价+原油+OPEC&hl=zh-CN&gl=CN&ceid=CN:zh-Hans", "zh"),
506
+ ]
507
+
508
+ for feed_url, lang in feeds:
509
+ try:
510
+ req = urllib.request.Request(feed_url, headers={'User-Agent': 'Mozilla/5.0'})
511
+ with urllib.request.urlopen(req, timeout=8) as resp:
512
+ data = resp.read().decode('utf-8', errors='replace')
513
+
514
+ # Parse XML items
515
+ items = re.findall(r'<item>(.*?)</item>', data, re.DOTALL)
516
+
517
+ for item_xml in items[:8]:
518
+ title = re.search(r'<title>(.*?)</title>', item_xml)
519
+ source = re.search(r'<source[^>]*>(.*?)</source>', item_xml)
520
+ pub_date = re.search(r'<pubDate>(.*?)</pubDate>', item_xml)
521
+
522
+ if title:
523
+ title_text = title.group(1).strip()
524
+ # Clean HTML entities
525
+ title_text = title_text.replace('&amp;', '&').replace('&lt;', '<').replace('&gt;', '>').replace('&#39;', "'").replace('&quot;', '"')
526
+
527
+ src = source.group(1).strip() if source else 'News'
528
+
529
+ # Parse date
530
+ date_str = ''
531
+ if pub_date:
532
+ try:
533
+ dt = datetime.strptime(pub_date.group(1).strip()[:25],
534
+ '%a, %d %b %Y %H:%M:%S')
535
+ date_str = dt.strftime('%m-%d %H:%M')
536
+ except:
537
+ date_str = pub_date.group(1).strip()[:16]
538
+
539
+ # Auto-tag based on keywords
540
+ tag = _auto_tag(title_text)
541
+
542
+ news_items.append({
543
+ 'text': title_text,
544
+ 'src': src,
545
+ 'time': date_str,
546
+ 'tag': tag,
547
+ 'lang': lang,
548
+ })
549
+
550
+ except Exception as e:
551
+ print(f"[NEWS] Feed fetch error ({lang}): {e}")
552
+
553
+ if news_items:
554
+ _news_cache["data"] = news_items[:15]
555
+ _news_cache["ts"] = now
556
+ print(f"[NEWS] Fetched {len(news_items)} news items")
557
+
558
+ return news_items[:15]
559
+
560
+
561
+ def _auto_tag(text: str) -> str:
562
+ """Auto-tag news based on keywords."""
563
+ t = text.lower()
564
+ if any(w in t for w in ['opec', 'supply', 'production', 'output', 'barrel',
565
+ '产量', '减产', '增产', '供给', '库存', 'inventory']):
566
+ return '供给'
567
+ if any(w in t for w in ['demand', 'consumption', 'growth', 'recession',
568
+ '需求', '消费', '增长', '衰退', 'gdp']):
569
+ return '需求'
570
+ if any(w in t for w in ['war', 'sanction', 'iran', 'russia', 'conflict', 'military',
571
+ '制裁', '冲突', '地缘', '战争', 'tariff', '关税', 'trump']):
572
+ return '地缘'
573
+ if any(w in t for w in ['fed', 'rate', 'inflation', 'dollar', 'central bank',
574
+ '利率', '通胀', '美联储', '央行', '美元']):
575
+ return '宏观'
576
+ if any(w in t for w in ['renewable', 'ev', 'solar', 'wind', 'transition', 'climate',
577
+ '新能源', '碳', '气候', '转型']):
578
+ return '政策'
579
+ return '市场'
580
+
581
+
582
+ @app.get("/api/live-prices")
583
+ def api_live_prices():
584
+ """Return latest daily oil prices (WTI, Brent, Natural Gas)."""
585
+ data = _fetch_live_prices()
586
+ if not data:
587
+ raise HTTPException(status_code=503, detail="Unable to fetch live prices")
588
+ return data
589
+
590
+
591
+ @app.get("/api/live-news")
592
+ def api_live_news():
593
+ """Return latest oil-related news from RSS feeds."""
594
+ data = _fetch_live_news()
595
+ return {"items": data}
596
+
597
+
598
+ # ═══════════════════════════════════════════════════════════
599
+ # Static file serving (for Docker / HuggingFace deployment)
600
+ # ═══════════════════════════════════════════════════════════
601
+
602
+ _frontend_dist = os.path.join(BASE_DIR, 'frontend', 'dist')
603
+ if os.path.isdir(_frontend_dist):
604
+ from fastapi.staticfiles import StaticFiles
605
+ from fastapi.responses import FileResponse
606
+
607
+ # Serve static assets (JS/CSS/images)
608
+ app.mount("/assets", StaticFiles(directory=os.path.join(_frontend_dist, "assets")), name="static-assets")
609
+
610
+ # Serve favicon and other root files
611
+ @app.get("/favicon.svg")
612
+ async def favicon():
613
+ return FileResponse(os.path.join(_frontend_dist, "favicon.svg"))
614
+
615
+ # Catch-all: serve index.html for SPA routing
616
+ @app.get("/{full_path:path}")
617
+ async def serve_spa(full_path: str):
618
+ file_path = os.path.join(_frontend_dist, full_path)
619
+ if os.path.isfile(file_path):
620
+ return FileResponse(file_path)
621
+ return FileResponse(os.path.join(_frontend_dist, "index.html"))
622
+
623
+
624
+ if __name__ == '__main__':
625
+ import uvicorn
626
+ port = int(os.environ.get("PORT", 8765))
627
+ print("=" * 60)
628
+ print(f"油刃有余 OilVerse API — http://localhost:{port}")
629
+ print("=" * 60)
630
+ uvicorn.run(app, host="0.0.0.0", port=port)
config.py ADDED
@@ -0,0 +1,95 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ """
2
+ config.py — 全局常量、特征定义、路径、API Key
3
+ =================================================
4
+ 所有模块共享的配置集中在此。
5
+ """
6
+ import os
7
+
8
+ # ── 工作目录 ──
9
+ BASE_DIR = os.environ.get('OILVERSE_BASE_DIR', os.path.dirname(os.path.abspath(__file__)))
10
+ OUTPUT_DIR = os.path.join(BASE_DIR, 'output')
11
+ DATA_DIR = os.path.join(BASE_DIR, 'data', 'csv_raw')
12
+
13
+ # ── API Keys ──
14
+ FRED_API_KEY = 'fc02a6e6a359a4cc16f0f1752d258011'
15
+ EIA_API_KEY = '9Nv5PhLREMmmKeo0zJ2U3Zu21Bntf8DfhEKBpi55'
16
+ SILICONFLOW_API_KEY = 'sk-cgllfrsuchzzwerkxcegkhbroboqcnpuubhreyrfudfstqjv'
17
+ SILICONFLOW_BASE_URL = 'https://api.siliconflow.cn/v1'
18
+ SILICONFLOW_MODEL = 'Qwen/Qwen2.5-7B-Instruct'
19
+
20
+ # ── 价格列 ──
21
+ PRICE_COLS = {
22
+ 'WTI': 'WTI_spot',
23
+ 'Brent': 'Brent_spot',
24
+ }
25
+ PRICE_COL = 'WTI_spot' # backward compat
26
+
27
+ # ── 特征列表 (20个,含GPR + 新闻情绪) ──
28
+ FEATURES = [
29
+ 'Brent_spot', 'natgas_spot_henry', 'iron_ore_spot', # Price
30
+ 'rig_count_us_new', 'supply_saudi', 'us_oil_inventory_total', # Supply
31
+ 'pmi_us_mfg', 'usd_index', 'nonfarm_us', 'ipi_us', # Demand
32
+ 'vix_lag1', 'vix_lag2', 'geo_shock_count', 'geo_active_events', # Risk+Geo
33
+ 'mom1m_lag1', 'hist_vol_12m', 'rsi12m', # Technical
34
+ 'news_oil_sentiment', 'news_geo_tone', 'news_article_volume', # Alternative (GDELT)
35
+ ]
36
+
37
+ # ── 因子分组 ──
38
+ FACTOR_GROUPS = {
39
+ 'Price': ['Brent_spot', 'natgas_spot_henry', 'iron_ore_spot'],
40
+ 'Supply': ['rig_count_us_new', 'supply_saudi', 'us_oil_inventory_total'],
41
+ 'Demand': ['pmi_us_mfg', 'usd_index', 'nonfarm_us', 'ipi_us'],
42
+ 'Risk_Geo': ['vix_lag1', 'vix_lag2', 'geo_shock_count', 'geo_active_events'],
43
+ 'Technical': ['mom1m_lag1', 'hist_vol_12m', 'rsi12m'],
44
+ 'Alternative': ['news_oil_sentiment', 'news_geo_tone', 'news_article_volume'],
45
+ }
46
+
47
+ # ── Walk-Forward 参数 ──
48
+ TRAIN_WINDOW = 120
49
+ MAX_FEATURES = 10
50
+ MIN_TRAIN_SAMPLES = 20
51
+
52
+ # ── Regime 签名 (历史时期特征向量) ──
53
+ REGIME_SIGNATURES = {
54
+ '2008 金融危机': {'supply_stress': 0.1, 'demand_stress': 0.6, 'geopolitical_stress': 0.1, 'price_momentum': 0.15, 'vol_level': 0.25},
55
+ '2014 页岩油冲击': {'supply_stress': 0.5, 'demand_stress': 0.2, 'geopolitical_stress': 0.05, 'price_momentum': 0.2, 'vol_level': 0.12},
56
+ '2020 COVID': {'supply_stress': 0.3, 'demand_stress': 0.5, 'geopolitical_stress': 0.05, 'price_momentum': 0.1, 'vol_level': 0.30},
57
+ '2022 俄乌冲突': {'supply_stress': 0.3, 'demand_stress': 0.1, 'geopolitical_stress': 0.5, 'price_momentum': 0.05, 'vol_level': 0.15},
58
+ '2023 OPEC减产': {'supply_stress': 0.5, 'demand_stress': 0.15, 'geopolitical_stress': 0.15, 'price_momentum': 0.1, 'vol_level': 0.08},
59
+ '常态/低波动': {'supply_stress': 0.15, 'demand_stress': 0.15, 'geopolitical_stress': 0.1, 'price_momentum': 0.1, 'vol_level': 0.04},
60
+ }
61
+
62
+ REGIME_TYPE_MAP = {
63
+ '2008 金融危机': 'demand_collapse',
64
+ '2014 页岩油冲击': 'supply_glut',
65
+ '2020 COVID': 'demand_collapse',
66
+ '2022 俄乌冲突': 'geopolitical',
67
+ '2023 OPEC减产': 'supply_cut',
68
+ '常态/低波动': 'normal',
69
+ }
70
+
71
+ # ── 行业映射 ──
72
+ INDUSTRIES = ['Aviation', 'Logistics', 'Chemicals', 'Manufacturing', 'Upstream_OG']
73
+ INDUSTRY_ZH = {
74
+ 'Aviation': '航空', 'Logistics': '物流', 'Chemicals': '化工',
75
+ 'Manufacturing': '制造', 'Upstream_OG': '上游油气',
76
+ }
77
+
78
+ # ── 输出文件路径 ──
79
+ OUTPUT_FILES = {
80
+ 'results': os.path.join(OUTPUT_DIR, 'v2_championship_results.csv'),
81
+ 'shap': os.path.join(OUTPUT_DIR, 'v2_shap_records.json'),
82
+ 'nlg': os.path.join(OUTPUT_DIR, 'v2_nlg_reports.json'),
83
+ 'scenarios': os.path.join(OUTPUT_DIR, 'v2_scenarios.json'),
84
+ 'regime': os.path.join(OUTPUT_DIR, 'v2_regime_data.json'),
85
+ 'ablation': os.path.join(OUTPUT_DIR, 'v2_ablation.json'),
86
+ 'hedging': os.path.join(OUTPUT_DIR, 'v2_hedging.json'),
87
+ 'backtest': os.path.join(OUTPUT_DIR, 'v2_hedge_backtest.json'),
88
+ 'feat_sel': os.path.join(OUTPUT_DIR, 'v2_feature_selection.json'),
89
+ 'dashboard': os.path.join(OUTPUT_DIR, 'risk_dashboard.html'),
90
+ 'panel_live': os.path.join(OUTPUT_DIR, 'panel_monthly_live.csv'),
91
+ 'lineage': os.path.join(OUTPUT_DIR, 'data_lineage.json'),
92
+ 'quality': os.path.join(OUTPUT_DIR, 'data_quality.json'),
93
+ 'causal': os.path.join(OUTPUT_DIR, 'causal_analysis.json'),
94
+ 'events': os.path.join(OUTPUT_DIR, 'event_timeline.json'),
95
+ }
core/__init__.py ADDED
@@ -0,0 +1,8 @@
 
 
 
 
 
 
 
 
 
1
+ """core/ — ML prediction engine modules."""
2
+ import sys, os
3
+ sys.path.insert(0, os.path.dirname(os.path.dirname(__file__)))
4
+
5
+ from core.engine import load_panel, run_walk_forward
6
+ from core.analysis import apply_industry_rules, generate_all_reports, evaluate_results, run_ablation
7
+ from core.hedging import compute_all_industry_hedges, backtest_hedging
8
+ from core.feature_selection import run_feature_funnel
core/analysis.py ADDED
@@ -0,0 +1,395 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ """
2
+ analysis.py — NLG报告、行业影响、评估指标、消融实验
3
+ ====================================================
4
+ 从 v2_championship.py 拆出的分析与评估模块。
5
+ """
6
+
7
+ import pandas as pd
8
+ import numpy as np
9
+ from sklearn.linear_model import QuantileRegressor
10
+ from sklearn.preprocessing import StandardScaler
11
+
12
+ from config import FACTOR_GROUPS, INDUSTRIES, INDUSTRY_ZH
13
+
14
+
15
+ # ═══════════════════════════════════════════════════════════
16
+ # INDUSTRY IMPACT RULE ENGINE
17
+ # ═══════════════════════════════════════════════════════════
18
+
19
+ def apply_industry_rules(rec):
20
+ """基于风险等级、偏置、因子等推断各行业的风险和建议。"""
21
+ risk_level = rec.get('risk_level', 'Low')
22
+ risk_bias = rec.get('risk_bias', 'Balanced')
23
+ vol_ratio = rec.get('vol_ratio', 1.0)
24
+ top_fac = rec.get('top_factor', 'Unknown')
25
+
26
+ is_high = risk_level == 'High'
27
+ is_medium = risk_level == 'Medium'
28
+ is_upward = risk_bias == 'Upward'
29
+ is_downward = risk_bias == 'Downward'
30
+ wide = vol_ratio > 1.3
31
+
32
+ rules = {}
33
+ for industry in INDUSTRIES:
34
+ ind_risk = 'Low'
35
+ ind_action = 'Routine monitoring'
36
+
37
+ if industry == 'Aviation':
38
+ if is_high and is_upward:
39
+ ind_risk, ind_action = 'High', 'Increase hedging coverage; review fuel cost budget'
40
+ elif is_high:
41
+ ind_risk, ind_action = 'High', 'Elevated volatility; prepare contingency liquidity'
42
+ elif is_upward:
43
+ ind_risk, ind_action = 'Medium-High', 'Monitor fuel cost exposure; consider forward contracts'
44
+ elif is_medium:
45
+ ind_risk, ind_action = 'Medium', 'Review quarterly fuel hedging strategy'
46
+ if top_fac == 'Demand': ind_action += '; demand-driven → cost pressure may persist'
47
+ elif top_fac == 'Supply': ind_action += '; supply-driven → watch OPEC decisions'
48
+ elif top_fac == 'Risk_Geo': ind_action += '; geopolitical risk → event monitoring'
49
+
50
+ elif industry == 'Logistics':
51
+ if is_high and is_upward:
52
+ ind_risk, ind_action = 'Medium-High', 'Review transport cost pass-through; working capital buffer'
53
+ elif is_high:
54
+ ind_risk, ind_action = 'Medium', 'Monitor diesel/freight cost exposure'
55
+ elif is_medium and is_upward:
56
+ ind_risk, ind_action = 'Medium', 'Review fuel surcharge mechanisms'
57
+
58
+ elif industry == 'Chemicals':
59
+ if is_upward and top_fac == 'Supply':
60
+ ind_risk, ind_action = 'High', 'Feedstock cost pressure; margin compression likely'
61
+ elif is_high:
62
+ ind_risk, ind_action = 'Medium-High', 'Monitor naphtha/ethylene spread; review procurement'
63
+ elif wide:
64
+ ind_risk, ind_action = 'Medium', 'Profit uncertainty elevated; scenario planning advised'
65
+
66
+ elif industry == 'Manufacturing':
67
+ if is_high and is_upward:
68
+ ind_risk, ind_action = 'High', 'Energy cost surge risk; review energy hedging'
69
+ elif is_high:
70
+ ind_risk, ind_action = 'Medium', 'Elevated input cost volatility'
71
+ elif is_medium:
72
+ ind_risk, ind_action = 'Medium', 'Monitor energy procurement costs'
73
+
74
+ elif industry == 'Upstream_OG':
75
+ if is_downward and is_high:
76
+ ind_risk, ind_action = 'High', 'Revenue decline risk; review covenant compliance & liquidity'
77
+ elif is_downward:
78
+ ind_risk, ind_action = 'Medium-High', 'Downside tail expanding; monitor cash flow coverage'
79
+ elif is_upward:
80
+ ind_risk, ind_action = 'Low', 'Revenue tailwind; capex commitment review advised'
81
+ else:
82
+ ind_risk, ind_action = 'Low-Medium', 'Balanced outlook'
83
+
84
+ rules[f'{industry}_risk'] = ind_risk
85
+ rules[f'{industry}_action'] = ind_action
86
+ return rules
87
+
88
+
89
+ # ═══════════════════════════════════════════════════════════
90
+ # REGIME ECONOMIC NARRATIVES
91
+ # ═══════════════════════════════════════════════════════════
92
+
93
+ REGIME_NARRATIVES = {
94
+ '2008 金融危机': {
95
+ 'history': '2008年全球金融危机期间,油价从$147暴跌至$32,降幅78%。需求端崩塌是主因——全球GDP收缩、贸易锐减、制造业PMI普遍跌破40。',
96
+ 'implication': '需求崩塌格局下,下游成本端企业短期受益于低油价,但总需求萎缩拖累整体营收。上游企业面临最大冲击。',
97
+ 'hedge_advice': '上游企业应���即锁定远期销售价格;下游企业可逢低建仓,锁定低价原料。',
98
+ },
99
+ '2014 页岩油冲击': {
100
+ 'history': '2014-16年美国页岩油产量爆发(+400万桶/日),叠加OPEC拒绝减产,油价从$110跌至$26。供给过剩主导。',
101
+ 'implication': '供给过剩格局持续时间长(18个月以上),下游企业成本优势可持续;上游企业需要重组债务、缩减资本开支。',
102
+ 'hedge_advice': '重点关注远期曲线结构(contango加深),利用期货锁价窗口。下游企业延长采购合约期限。',
103
+ },
104
+ '2020 COVID': {
105
+ 'history': '2020年COVID-19导致全球需求暴减2000万桶/日,WTI期货历史性跌至负值。需求冲击+仓储危机双重打击。',
106
+ 'implication': '极端需求冲击下,航空业客运量降90%+,物流链中断。但复苏速度可能超预期——V型反弹是历史常态。',
107
+ 'hedge_advice': '短期:保持现金流弹性,避免过度套保。中期:关注OPEC+协调减产信号,逢低建立多头头寸。',
108
+ },
109
+ '2022 俄乌冲突': {
110
+ 'history': '2022年俄乌冲突导致俄罗斯原油出口受制裁,供给缺口+地缘溢价推升布伦特至$130+。地缘政治+供给双重冲击。',
111
+ 'implication': '地缘驱动的价格飙升通常突然但短暂(3-6个月),随后制裁适应和替代供给逐步消化溢价。',
112
+ 'hedge_advice': '事件驱动行情中,期权策略优于期货——买入看涨期权锁定上限成本,保留价格回落的收益空间。',
113
+ },
114
+ '2023 OPEC减产': {
115
+ 'history': '2023年OPEC+主动减产200万桶/日,托底油价在$70-90区间。供给管理型市场,价格波动率较低。',
116
+ 'implication': 'OPEC减产格局下,价格区间可预测性较高,但下行风险来自减产执行率下滑和非OPEC增产。',
117
+ 'hedge_advice': '低波动环境适合使用零成本领(collar)策略,锁定窄价格带。',
118
+ },
119
+ '常态/低波动': {
120
+ 'history': '油价处于常态波动区间,无明显单一因子主导。市场处于供需基本平衡状态。',
121
+ 'implication': '常态下关注结构性变化信号——OPEC会议决策、美国钻井数趋势、中国PMI走向。',
122
+ 'hedge_advice': '常态下对冲比例可适当降低(25-40%),使用低成本期货锁价即可。',
123
+ },
124
+ }
125
+
126
+
127
+ # ═══════════════════════════════════════════════════════════
128
+ # NLG REPORT GENERATION (ENHANCED)
129
+ # ═══════════════════════════════════════════════════════════
130
+
131
+ def generate_nlg_report(row):
132
+ """生成单月深度风险研判报告,含经济学叙事和对冲建议。"""
133
+ date = pd.Timestamp(row['test_date']).strftime('%Y年%m月')
134
+ rl = row['risk_level']
135
+ rb = row['risk_bias']
136
+ top = row.get('top_factor', 'Unknown')
137
+ q10 = row['pred_q10_1m'] * 100
138
+ q50 = row['pred_q50_1m'] * 100
139
+ q90 = row['pred_q90_1m'] * 100
140
+ vol = row['pred_vol'] * 100
141
+
142
+ rl_zh = {'Low': '低', 'Medium': '中等', 'High': '高'}.get(rl, rl)
143
+ rb_zh = {'Upward': '偏上行', 'Downward': '偏下行', 'Balanced': '均衡'}.get(rb, rb)
144
+ factor_zh = {
145
+ 'Price': '价格联动', 'Supply': '供给端', 'Demand': '需求端',
146
+ 'Risk_Geo': '地缘政治/风险', 'Technical': '技术面',
147
+ }.get(top, top)
148
+
149
+ # ── Part 1: 核心判断 ──
150
+ summary = (
151
+ f"【{date}油价风险研判】\n"
152
+ f"■ 核心判断:风险等级{rl_zh},方向{rb_zh},由{factor_zh}因子主导。\n"
153
+ f"■ 1M预测区间:[{q10:+.1f}%, {q90:+.1f}%],中枢{q50:+.1f}%,波动率{vol:.1f}%。\n"
154
+ )
155
+
156
+ # 3M
157
+ if pd.notna(row.get('pred_q10_3m')):
158
+ summary += f"■ 3M预测区间:[{row['pred_q10_3m']*100:+.1f}%, {row['pred_q90_3m']*100:+.1f}%],中枢{row['pred_q50_3m']*100:+.1f}%。\n"
159
+
160
+ # CQR
161
+ cqr_lo = row.get('cqr_q10_1m', None)
162
+ if cqr_lo is not None and pd.notna(cqr_lo):
163
+ summary += f"■ CQR校准区间:[{cqr_lo*100:+.1f}%, {row['cqr_q90_1m']*100:+.1f}%](分布自由覆盖保证)。\n"
164
+
165
+ # ── Part 2: Regime 经济学叙事 ──
166
+ regime = row.get('regime_match', '')
167
+ regime_sim = row.get('regime_similarity', 0)
168
+ if regime and regime != 'Unknown':
169
+ summary += f"\n▶ 格局识别:当前最接近「{regime}」(相似度{regime_sim*100:.0f}%)\n"
170
+ narr = REGIME_NARRATIVES.get(regime, {})
171
+ if narr:
172
+ summary += f" 历史参照:{narr['history']}\n"
173
+ summary += f" 当前启示:{narr['implication']}\n"
174
+ summary += f" 对冲建议:{narr['hedge_advice']}\n"
175
+
176
+ # ── Part 3: 行业影响 ──
177
+ high_risk = []
178
+ med_risk = []
179
+ for ind in INDUSTRIES:
180
+ risk = str(row.get(f'{ind}_risk', 'Low'))
181
+ if 'High' in risk:
182
+ high_risk.append(INDUSTRY_ZH.get(ind, ind))
183
+ elif 'Medium' in risk:
184
+ med_risk.append(INDUSTRY_ZH.get(ind, ind))
185
+ if high_risk:
186
+ summary += f"\n▶ 高风险行业:{'、'.join(high_risk)}——建议提升套保覆盖率至60-80%。\n"
187
+ if med_risk:
188
+ summary += f"▶ 中风险行业:{'、'.join(med_risk)}——建议维持25-50%套保覆盖。\n"
189
+ if not high_risk and not med_risk:
190
+ summary += f"\n▶ 各行业风险均处于可控水平,建议维持常规套保比例。\n"
191
+
192
+ # ── Part 4: 压力测试 ──
193
+ base = row.get('scenario_base', 0) * 100
194
+ vix = row.get('scenario_vix_shock', 0) * 100
195
+ supply = row.get('scenario_supply_cut', 0) * 100
196
+ demand = row.get('scenario_demand_crash', 0) * 100
197
+ worst = min(supply, demand)
198
+ summary += (
199
+ f"\n▶ 压力测试:基准{base:+.1f}% | VIX翻倍{vix:+.1f}% | "
200
+ f"供给中断{supply:+.1f}% | 需求崩塌{demand:+.1f}%\n"
201
+ f" 最大下行风险:{worst:+.1f}%,建议预留相应流动性缓冲。\n"
202
+ )
203
+
204
+ return summary
205
+
206
+
207
+ def generate_all_reports(results):
208
+ """为所有月份生成 NLG 报告。"""
209
+ reports = {}
210
+ for _, row in results.iterrows():
211
+ dt = pd.Timestamp(row['test_date']).strftime('%Y-%m')
212
+ reports[dt] = generate_nlg_report(row)
213
+ return reports
214
+
215
+
216
+ # ═══════════════════════════════════════════════════════════
217
+ # EVALUATION METRICS
218
+ # ═══════════════════════════════════════════════════════════
219
+
220
+ def evaluate_results(results):
221
+ """计算全面的评估指标并打印。"""
222
+ # 只评估有实际值的月份(排除 live forecast)
223
+ eval_mask = results['actual_ret_1m'].notna()
224
+ results = results[eval_mask].copy()
225
+ ar = results['actual_ret_1m'].values
226
+ av = results['actual_vol'].values
227
+ n = len(results)
228
+
229
+ print(f"\n{'='*65}")
230
+ print("V2 CHAMPIONSHIP — EVALUATION")
231
+ print("=" * 65)
232
+
233
+ # 1M Interval
234
+ print(f"\n--- 1M INTERVAL ---")
235
+ models = [('QR (vol-adapt)', 'pred'), ('LightGBM', 'lgb')]
236
+ if 'cqr_q10_1m' in results.columns:
237
+ models.append(('Conformal QR', 'cqr'))
238
+ for model_name, prefix in models:
239
+ q10 = results[f'{prefix}_q10_1m'].values
240
+ q90 = results[f'{prefix}_q90_1m'].values
241
+ cov = ((ar >= q10) & (ar <= q90)).mean()
242
+ wis = ((q90-q10) + (2/0.2)*np.maximum(q10-ar, 0) + (2/0.2)*np.maximum(ar-q90, 0)).mean()
243
+ vm = np.median(av)
244
+ hi = av > vm
245
+ cov_hi = ((ar[hi] >= q10[hi]) & (ar[hi] <= q90[hi])).mean() if hi.sum() > 0 else 0
246
+ print(f" {model_name:<18} Cov={cov:.1%} HiCov={cov_hi:.1%} WIS={wis:.4f}")
247
+
248
+ nq10 = np.full(n, np.quantile(ar, 0.10))
249
+ nq90 = np.full(n, np.quantile(ar, 0.90))
250
+ naive_wis = ((nq90-nq10) + (2/0.2)*np.maximum(nq10-ar, 0) + (2/0.2)*np.maximum(ar-nq90, 0)).mean()
251
+ print(f" {'Naive':<18} WIS={naive_wis:.4f}")
252
+
253
+ # 3M
254
+ print(f"\n--- 3M INTERVAL ---")
255
+ m3 = results['actual_ret_3m'].notna()
256
+ if m3.sum() > 10:
257
+ ar3 = results.loc[m3, 'actual_ret_3m'].values
258
+ q10_3 = results.loc[m3, 'pred_q10_3m'].values
259
+ q90_3 = results.loc[m3, 'pred_q90_3m'].values
260
+ cov3 = ((ar3 >= q10_3) & (ar3 <= q90_3)).mean()
261
+ wis3 = ((q90_3-q10_3) + (2/0.2)*np.maximum(q10_3-ar3, 0) + (2/0.2)*np.maximum(ar3-q90_3, 0)).mean()
262
+ print(f" QR 3M (vol-adapt) Cov={cov3:.1%} WIS={wis3:.4f} n={m3.sum()}")
263
+
264
+ # Vol
265
+ print(f"\n--- VOL SCORE ---")
266
+ pv = results['pred_vol'].values
267
+ bl = results['baseline_ewma'].values
268
+ for nm, prd in [('V2 BL+Resid', pv), ('EWMA', bl)]:
269
+ from sklearn.metrics import mean_squared_error
270
+ rmse = np.sqrt(mean_squared_error(av, prd))
271
+ corr = np.corrcoef(av, prd)[0, 1]
272
+ print(f" {nm:<18} RMSE={rmse:.4f} corr={corr:+.3f}")
273
+
274
+ # Risk levels
275
+ print(f"\n--- RISK LEVELS ---")
276
+ for lvl in ['Low', 'Medium', 'High']:
277
+ mask = results['risk_level'] == lvl
278
+ if mask.sum() > 0:
279
+ print(f" {lvl:<8}: vol={av[mask].mean():.4f} n={mask.sum()}")
280
+
281
+ # Factor frequency
282
+ print(f"\n--- FACTOR FREQ ---")
283
+ if 'top_factor' in results.columns:
284
+ for fac, cnt in results['top_factor'].value_counts().items():
285
+ print(f" {fac:<12}: {cnt} ({cnt/n:.1%})")
286
+
287
+ # SHAP
288
+ print(f"\n--- SHAP (avg) ---")
289
+ for g in FACTOR_GROUPS:
290
+ col = f'shap_{g}'
291
+ if col in results.columns:
292
+ print(f" {g:<12}: {results[col].abs().mean():.4f}")
293
+
294
+ # Scenario
295
+ print(f"\n--- SCENARIO (latest) ---")
296
+ lat = results.iloc[-1]
297
+ print(f" Base: {lat['scenario_base']*100:+.1f}%")
298
+ print(f" VIX shock: {lat['scenario_vix_shock']*100:+.1f}%")
299
+ print(f" Supply cut: {lat['scenario_supply_cut']*100:+.1f}%")
300
+ print(f" Demand crash: {lat['scenario_demand_crash']*100:+.1f}%")
301
+
302
+ # NLG sample
303
+ print(f"\n--- NLG REPORT (latest) ---")
304
+ print(generate_nlg_report(results.iloc[-1]))
305
+
306
+
307
+ # ═══════════════════════════════════════════════════════════
308
+ # ABLATION EXPERIMENTS
309
+ # ═══════════════════════════════════════════════════════════
310
+
311
+ def _run_qr_eval(panel, feat_list, train_window=120):
312
+ """内部辅助:对给定特征子集跑 walk-forward QR 并返回 (cov, wis, n)。"""
313
+ hits, totals, wis_list = 0, 0, []
314
+ for i in range(train_window, len(panel) - 1):
315
+ train_df = panel.iloc[max(0, i - train_window):i]
316
+ test_df = panel.iloc[i:i + 1]
317
+ avail = [f for f in feat_list if f in train_df.columns and train_df[f].notna().mean() > 0.8]
318
+ if len(avail) < 2:
319
+ continue
320
+ X_tr = train_df[avail].fillna(train_df[avail].median())
321
+ X_te = test_df[avail].fillna(train_df[avail].median())
322
+ sc = StandardScaler()
323
+ X_tr_s = sc.fit_transform(X_tr)
324
+ X_te_s = sc.transform(X_te)
325
+ y = train_df['target_ret_1m'].dropna()
326
+ mask = y.index.isin(X_tr.index)
327
+ y = y[mask]
328
+ X_tr_s = X_tr_s[:len(y)]
329
+ actual = panel['target_ret_1m'].iloc[i]
330
+ if np.isnan(actual):
331
+ continue
332
+ try:
333
+ qr10 = QuantileRegressor(quantile=0.10, alpha=0.1, solver='highs')
334
+ qr90 = QuantileRegressor(quantile=0.90, alpha=0.1, solver='highs')
335
+ qr10.fit(X_tr_s, y)
336
+ qr90.fit(X_tr_s, y)
337
+ p10, p90 = qr10.predict(X_te_s)[0], qr90.predict(X_te_s)[0]
338
+ if p10 > p90: p10, p90 = p90, p10
339
+ hit = 1 if p10 <= actual <= p90 else 0
340
+ hits += hit
341
+ totals += 1
342
+ wis_list.append((p90-p10) + (2/0.2)*max(p10-actual, 0) + (2/0.2)*max(actual-p90, 0))
343
+ except:
344
+ continue
345
+ cov = hits / totals if totals > 0 else 0
346
+ wis = np.mean(wis_list) if wis_list else 999
347
+ return cov, wis, totals
348
+
349
+
350
+ def run_ablation(panel, features):
351
+ """运行消融实验:训练窗口 + 因子组 leave-one-out。"""
352
+ print(f"\n--- ABLATION EXPERIMENTS ---")
353
+ ablation_results = []
354
+
355
+ # ── Part 1: Window ablation ──
356
+ print(" [窗口消融]")
357
+ for w in [84, 120, 180]:
358
+ cov, wis, n_ab = _run_qr_eval(panel, features, train_window=w)
359
+ ablation_results.append({
360
+ 'type': 'window', 'param': w, 'param_label': f'{w}月',
361
+ 'cov': round(cov, 3), 'wis': round(wis, 4), 'n': n_ab
362
+ })
363
+ print(f" Window={w:>3}: Cov={cov:.1%} WIS={wis:.4f} n={n_ab}")
364
+
365
+ # ── Part 2: Factor-group leave-one-out ──
366
+ print(" [因子组消融 — Leave-One-Out]")
367
+ # Baseline: all factors
368
+ base_cov, base_wis, base_n = _run_qr_eval(panel, features)
369
+ ablation_results.append({
370
+ 'type': 'factor_group', 'param': 'ALL', 'param_label': '全部因子',
371
+ 'cov': round(base_cov, 3), 'wis': round(base_wis, 4), 'n': base_n
372
+ })
373
+ print(f" ALL (baseline): Cov={base_cov:.1%} WIS={base_wis:.4f}")
374
+
375
+ group_zh = {'Price': '价格联动', 'Supply': '供给端', 'Demand': '需求端',
376
+ 'Risk_Geo': '地缘/风险', 'Technical': '技术面'}
377
+
378
+ for group, members in FACTOR_GROUPS.items():
379
+ # Remove this group's features
380
+ reduced = [f for f in features if f not in members]
381
+ if len(reduced) < 2:
382
+ continue
383
+ cov, wis, n_ab = _run_qr_eval(panel, reduced)
384
+ delta_cov = cov - base_cov
385
+ delta_wis = wis - base_wis
386
+ ablation_results.append({
387
+ 'type': 'factor_group', 'param': group,
388
+ 'param_label': f'去除{group_zh.get(group, group)}',
389
+ 'cov': round(cov, 3), 'wis': round(wis, 4), 'n': n_ab,
390
+ 'delta_cov': round(delta_cov, 3), 'delta_wis': round(delta_wis, 4),
391
+ })
392
+ print(f" -{group:<12}: Cov={cov:.1%} (Δ{delta_cov:+.1%}) "
393
+ f"WIS={wis:.4f} (Δ{delta_wis:+.4f})")
394
+
395
+ return ablation_results
core/engine.py ADDED
@@ -0,0 +1,632 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ """
2
+ engine.py — Walk-Forward 预测引擎
3
+ =====================================
4
+ 核心组件:
5
+ 1. 数据加载与目标构建
6
+ 2. Walk-Forward 主循环
7
+ ├─ 特征选择 (MI)
8
+ ├─ 波动率预测 (EWMA + Ridge residual)
9
+ ├─ 区间预测 (QR + LightGBM) × 1M/3M
10
+ ├─ Vol-Adaptive 宽度调整
11
+ ├─ LightGBM 特征重要性
12
+ ├─ 风险等级 / 偏置推断
13
+ ├─ Regime 检测 (余弦相似度)
14
+ └─ 因子归因 (Ridge)
15
+ """
16
+
17
+ import pandas as pd
18
+ import numpy as np
19
+ import warnings
20
+ from sklearn.linear_model import Ridge, QuantileRegressor
21
+ from sklearn.preprocessing import StandardScaler
22
+ from sklearn.feature_selection import mutual_info_regression
23
+ import lightgbm as lgb
24
+
25
+ # TFT (Temporal Fusion Transformer) — frontier deep learning model
26
+ try:
27
+ from core.tft_model import tft_predict_step
28
+ _TFT_AVAILABLE = True
29
+ except ImportError:
30
+ _TFT_AVAILABLE = False
31
+
32
+ from config import (
33
+ FEATURES, FACTOR_GROUPS, PRICE_COL, TRAIN_WINDOW,
34
+ MAX_FEATURES, MIN_TRAIN_SAMPLES,
35
+ REGIME_SIGNATURES, REGIME_TYPE_MAP,
36
+ )
37
+
38
+ warnings.filterwarnings('ignore')
39
+
40
+
41
+ # ═══════════════════════════════════════════════════════════
42
+ # DATA LOADING
43
+ # ═══════════════════════════════════════════════════════════
44
+
45
+ def load_panel(panel_path, price_col=None):
46
+ """加载月度面板并构建目标变量和地缘特征。
47
+
48
+ Args:
49
+ price_col: 可选,指定价格列(默认 config.PRICE_COL)。
50
+ 当切换目标时(如 Brent),自动从特征列表中移除该列。
51
+ """
52
+ if price_col is None:
53
+ price_col = PRICE_COL
54
+
55
+ monthly = pd.read_csv(panel_path, index_col=0, parse_dates=True)
56
+
57
+ # Geopolitical features
58
+ try:
59
+ geo = pd.read_csv('data/csv_raw/geopolitical_shocks.csv')
60
+ event_cols = [c for c in geo.columns if c not in ['date_str', 'date_num', 'year', 'month', 'day']]
61
+ geo['date'] = pd.to_datetime(geo[['year', 'month', 'day']])
62
+ geo_monthly = geo.set_index('date')[event_cols].resample('ME').sum()
63
+ geo_monthly['geo_shock_count'] = geo_monthly[event_cols].sum(axis=1)
64
+ geo_monthly['geo_active_events'] = (geo_monthly[event_cols] > 0).sum(axis=1)
65
+ monthly = monthly.merge(
66
+ geo_monthly[['geo_shock_count', 'geo_active_events']],
67
+ left_index=True, right_index=True, how='left'
68
+ )
69
+ monthly['geo_shock_count'] = monthly['geo_shock_count'].fillna(0)
70
+ monthly['geo_active_events'] = monthly['geo_active_events'].fillna(0)
71
+ print("✓ 地缘政治特征已添加")
72
+ except Exception as e:
73
+ print(f"⚠ GPR 数据未加载: {e}")
74
+ monthly['geo_shock_count'] = 0
75
+ monthly['geo_active_events'] = 0
76
+
77
+ # Targets (基于指定价格列)
78
+ monthly['target_ret_1m'] = monthly[price_col].pct_change(1).shift(-1)
79
+ monthly['target_ret_3m'] = monthly[price_col].pct_change(3).shift(-3)
80
+ monthly['target_abs_ret_1m'] = monthly['target_ret_1m'].abs()
81
+ monthly['target_abs_ret_3m'] = monthly['target_ret_3m'].abs()
82
+ monthly['target_up_1m'] = (monthly['target_ret_1m'] > 0).astype(int)
83
+ monthly['ewma_vol'] = monthly[price_col].pct_change(1).abs().ewm(alpha=0.06).mean()
84
+
85
+ # Filter features: 移除目标价格列自身,防止 target leakage
86
+ features = [f for f in FEATURES if f in monthly.columns and f != price_col]
87
+ # 如果目标是 Brent,把 WTI_spot 加到特征(如果不在列表里)
88
+ if price_col != 'WTI_spot' and 'WTI_spot' in monthly.columns and 'WTI_spot' not in features:
89
+ features.append('WTI_spot')
90
+
91
+ targets = ['target_ret_1m', 'target_ret_3m', 'target_abs_ret_1m',
92
+ 'target_abs_ret_3m', 'target_up_1m', 'ewma_vol']
93
+ keep_cols = [c for c in features + targets + [price_col] if c in monthly.columns]
94
+ panel = monthly[keep_cols].copy()
95
+ # 保留所有行(含无目标的最新月份,用于 live 预测)
96
+ n_with_target = panel['target_ret_1m'].notna().sum()
97
+ n_total = len(panel)
98
+ print(f"面板 [{price_col}]: {n_total} 月 ({n_with_target} 有目标, {n_total - n_with_target} live), {len(features)} 特征")
99
+ return panel, features
100
+
101
+
102
+ # ═══════════════════════════════════════════════════════════
103
+ # REGIME DETECTION
104
+ # ═══════════════════════════════════════════════════════════
105
+
106
+ def detect_regime(sel, coefs, x_vals, pred_vol):
107
+ """基于因子贡献计算当前 regime 向量,与历史时期做余弦相似度匹配。"""
108
+ regime_features = {
109
+ 'supply_stress': 0, 'demand_stress': 0,
110
+ 'geopolitical_stress': 0, 'price_momentum': 0, 'vol_level': 0,
111
+ }
112
+ supply_feats = {'rig_count_us_new', 'supply_saudi', 'us_oil_inventory_total'}
113
+ demand_feats = {'pmi_us_mfg', 'usd_index', 'nonfarm_us', 'ipi_us'}
114
+ geo_feats = {'vix_lag1', 'vix_lag2', 'geo_shock_count', 'geo_active_events'}
115
+ tech_feats = {'mom1m_lag1', 'hist_vol_12m', 'rsi12m'}
116
+
117
+ for f in sel:
118
+ coef_val = coefs.get(f, 0) * x_vals.get(f, 0)
119
+ if f in supply_feats:
120
+ regime_features['supply_stress'] += abs(coef_val)
121
+ elif f in demand_feats:
122
+ regime_features['demand_stress'] += abs(coef_val)
123
+ elif f in geo_feats:
124
+ regime_features['geopolitical_stress'] += abs(coef_val)
125
+ elif f in tech_feats:
126
+ regime_features['price_momentum'] += abs(coef_val)
127
+ regime_features['vol_level'] = pred_vol
128
+
129
+ # Cosine similarity
130
+ curr_vec = np.array(list(regime_features.values()))
131
+ curr_norm = np.linalg.norm(curr_vec)
132
+ best_regime, best_sim = '常态/低波动', 0
133
+ regime_sims = {}
134
+ for rname, rsig in REGIME_SIGNATURES.items():
135
+ ref_vec = np.array(list(rsig.values()))
136
+ ref_norm = np.linalg.norm(ref_vec)
137
+ sim = float(np.dot(curr_vec, ref_vec) / (curr_norm * ref_norm)) if curr_norm > 0 and ref_norm > 0 else 0
138
+ regime_sims[rname] = sim
139
+ if sim > best_sim:
140
+ best_sim = sim
141
+ best_regime = rname
142
+
143
+ return {
144
+ 'regime_match': best_regime,
145
+ 'regime_similarity': round(best_sim, 3),
146
+ 'regime_type': REGIME_TYPE_MAP.get(best_regime, 'normal'),
147
+ 'regime_sims': regime_sims,
148
+ }
149
+
150
+
151
+ # ═══════════════════════════════════════════════════════════
152
+ # WALK-FORWARD ENGINE
153
+ # ═══════════════════════════════════════════════════════════
154
+
155
+ def run_walk_forward(panel, features, train_window=TRAIN_WINDOW):
156
+ """执行完整的 walk-forward 预测循环。"""
157
+ results = []
158
+ shap_records = []
159
+
160
+ # Walk-forward: 有目标的月份用于训练/评估
161
+ last_target_idx = panel['target_ret_1m'].last_valid_index()
162
+ last_target_pos = panel.index.get_loc(last_target_idx) if last_target_idx is not None else len(panel) - 4
163
+ wf_end = min(last_target_pos + 1, len(panel))
164
+ for i in range(train_window, wf_end):
165
+ train_df = panel.iloc[max(0, i - train_window):i] # QR: rolling window
166
+ train_expand = panel.iloc[:i] # LGB: expanding window (all history)
167
+ test_df = panel.iloc[i:i + 1]
168
+ test_date = panel.index[i]
169
+
170
+ avail = [f for f in features if train_df[f].notna().mean() > 0.8]
171
+ if len(avail) < 3:
172
+ continue
173
+
174
+ # ── Impute + Scale ──
175
+ X_tr = train_df[avail].copy()
176
+ X_te = test_df[avail].copy()
177
+ for col in avail:
178
+ med = X_tr[col].median()
179
+ X_tr[col] = X_tr[col].fillna(med)
180
+ X_te[col] = X_te[col].fillna(med)
181
+
182
+ scaler = StandardScaler()
183
+ X_tr_s = pd.DataFrame(scaler.fit_transform(X_tr), columns=avail, index=train_df.index)
184
+ X_te_s = pd.DataFrame(scaler.transform(X_te), columns=avail, index=test_df.index)
185
+
186
+ # ── Feature selection (MI, inner split) ──
187
+ inner_n = int(len(X_tr_s) * 0.8)
188
+ y_sel = train_df['target_abs_ret_1m'].iloc[:inner_n]
189
+ X_sel = X_tr_s.iloc[:inner_n]
190
+ valid = y_sel.notna() & X_sel.notna().all(axis=1)
191
+ if valid.sum() < MIN_TRAIN_SAMPLES:
192
+ continue
193
+
194
+ try:
195
+ mi = mutual_info_regression(X_sel.loc[valid], y_sel.loc[valid], random_state=42, n_neighbors=5)
196
+ except:
197
+ mi = np.ones(len(avail))
198
+
199
+ K = min(MAX_FEATURES, len(avail))
200
+ sel = [avail[j] for j in np.argsort(mi)[-K:]]
201
+ X_tr_f = X_tr_s[sel]
202
+ X_te_f = X_te_s[sel]
203
+
204
+ # ── Actuals ──
205
+ actual_ret_1m = panel['target_ret_1m'].iloc[i]
206
+ actual_ret_3m = panel['target_ret_3m'].iloc[i] if pd.notna(panel['target_ret_3m'].iloc[i]) else np.nan
207
+ actual_vol = panel['target_abs_ret_1m'].iloc[i]
208
+ actual_up = panel['target_up_1m'].iloc[i]
209
+ ewma_now = test_df['ewma_vol'].values[0]
210
+
211
+ rec = {
212
+ 'test_date': test_date,
213
+ 'actual_ret_1m': actual_ret_1m,
214
+ 'actual_ret_3m': actual_ret_3m,
215
+ 'actual_vol': actual_vol,
216
+ 'actual_up': actual_up,
217
+ }
218
+
219
+ y_ret = train_df['target_ret_1m']
220
+ y_ret_3m = train_df['target_ret_3m']
221
+ y_vol = train_df['target_abs_ret_1m']
222
+ mask_r = y_ret.notna()
223
+ mask_3m = y_ret_3m.notna()
224
+
225
+ # ════ VOL HEAD ════
226
+ baseline_vol = float(ewma_now) if not np.isnan(ewma_now) else 0.05
227
+ rec['baseline_ewma'] = baseline_vol
228
+ valid_vol = y_vol.notna() & train_df['ewma_vol'].notna() & (train_df['ewma_vol'] > 0.001)
229
+ if valid_vol.sum() > MIN_TRAIN_SAMPLES:
230
+ log_ratio = np.log(y_vol[valid_vol] / train_df['ewma_vol'][valid_vol])
231
+ log_ratio = log_ratio.replace([np.inf, -np.inf], np.nan).dropna()
232
+ if len(log_ratio) > 15:
233
+ try:
234
+ ridge = Ridge(alpha=10.0)
235
+ ridge.fit(X_tr_f.loc[log_ratio.index], log_ratio)
236
+ plr = np.clip(ridge.predict(X_te_f)[0], -2.0, 2.0)
237
+ rec['pred_vol'] = float(np.clip(baseline_vol * np.exp(plr), 0.005, 0.50))
238
+ except:
239
+ rec['pred_vol'] = baseline_vol
240
+ else:
241
+ rec['pred_vol'] = baseline_vol
242
+ else:
243
+ rec['pred_vol'] = baseline_vol
244
+
245
+ # ════ INTERVAL HEAD: 1M (QR + LightGBM) ════
246
+ for q, alpha_q in [('q10', 0.10), ('q50', 0.50), ('q90', 0.90)]:
247
+ try:
248
+ qr = QuantileRegressor(quantile=alpha_q, alpha=0.1, solver='highs')
249
+ qr.fit(X_tr_f.loc[mask_r], y_ret.loc[mask_r])
250
+ rec[f'qr_{q}_1m'] = qr.predict(X_te_f)[0]
251
+ except:
252
+ rec[f'qr_{q}_1m'] = float(y_ret.quantile(alpha_q))
253
+ # LGB: expanding window (all history → more samples → better trees)
254
+ try:
255
+ X_tr_lgb = train_expand[avail].copy()
256
+ for col in avail:
257
+ X_tr_lgb[col] = X_tr_lgb[col].fillna(X_tr_lgb[col].median())
258
+ X_tr_lgb_s = pd.DataFrame(scaler.transform(X_tr_lgb), columns=avail, index=train_expand.index)
259
+ y_ret_lgb = train_expand['target_ret_1m']
260
+ mask_lgb = y_ret_lgb.notna() & X_tr_lgb_s[sel].notna().all(axis=1)
261
+ lgb_params = {
262
+ 'objective': 'quantile', 'alpha': alpha_q,
263
+ 'n_estimators': 100, 'max_depth': 3, 'learning_rate': 0.05,
264
+ 'num_leaves': 8,
265
+ 'min_child_samples': max(10, int(mask_lgb.sum() * 0.05)),
266
+ 'subsample': 0.8, 'colsample_bytree': 0.8,
267
+ 'reg_alpha': 0.3, 'reg_lambda': 0.5,
268
+ 'verbose': -1, 'random_state': 42,
269
+ }
270
+ lgb_model = lgb.LGBMRegressor(**lgb_params)
271
+ lgb_model.fit(X_tr_lgb_s[sel].loc[mask_lgb], y_ret_lgb.loc[mask_lgb])
272
+ rec[f'lgb_{q}_1m'] = lgb_model.predict(X_te_f)[0]
273
+ except:
274
+ rec[f'lgb_{q}_1m'] = rec[f'qr_{q}_1m']
275
+
276
+ # Enforce monotonicity
277
+ for pfx in ['qr', 'lgb']:
278
+ vals = [rec[f'{pfx}_q10_1m'], rec[f'{pfx}_q50_1m'], rec[f'{pfx}_q90_1m']]
279
+ rec[f'{pfx}_q10_1m'] = min(vals)
280
+ rec[f'{pfx}_q50_1m'] = np.median(vals)
281
+ rec[f'{pfx}_q90_1m'] = max(vals)
282
+
283
+ # ════ TFT HEAD (Temporal Fusion Transformer) ════
284
+ tft_ok = False
285
+ if _TFT_AVAILABLE and i >= train_window + 30: # Need enough history
286
+ try:
287
+ tft_result = tft_predict_step(
288
+ train_df, test_df, sel, y_col='target_ret_1m'
289
+ )
290
+ if tft_result is not None:
291
+ rec['tft_q10_1m'] = tft_result['tft_q10_1m']
292
+ rec['tft_q50_1m'] = tft_result['tft_q50_1m']
293
+ rec['tft_q90_1m'] = tft_result['tft_q90_1m']
294
+ tft_ok = True
295
+ except:
296
+ pass
297
+ if not tft_ok:
298
+ rec['tft_q10_1m'] = rec['qr_q10_1m']
299
+ rec['tft_q50_1m'] = rec['qr_q50_1m']
300
+ rec['tft_q90_1m'] = rec['qr_q90_1m']
301
+
302
+ # ════ INTERVAL HEAD: 3M ════
303
+ for q, alpha_q in [('q10', 0.10), ('q50', 0.50), ('q90', 0.90)]:
304
+ try:
305
+ qr3 = QuantileRegressor(quantile=alpha_q, alpha=0.1, solver='highs')
306
+ qr3.fit(X_tr_f.loc[mask_3m], y_ret_3m.loc[mask_3m])
307
+ rec[f'qr_{q}_3m'] = qr3.predict(X_te_f)[0]
308
+ except:
309
+ rec[f'qr_{q}_3m'] = float(y_ret_3m.quantile(alpha_q)) if mask_3m.sum() > 5 else 0.0
310
+ vals3 = [rec['qr_q10_3m'], rec['qr_q50_3m'], rec['qr_q90_3m']]
311
+ rec['qr_q10_3m'] = min(vals3)
312
+ rec['qr_q50_3m'] = np.median(vals3)
313
+ rec['qr_q90_3m'] = max(vals3)
314
+
315
+ # ════ QR + LGB + TFT ENSEMBLE ════
316
+ # Three-way blend: QR(50%) + LGB(25%) + TFT(25%)
317
+ w_qr, w_lgb, w_tft = 0.50, 0.25, 0.25
318
+ ens_q10 = w_qr * rec['qr_q10_1m'] + w_lgb * rec['lgb_q10_1m'] + w_tft * rec['tft_q10_1m']
319
+ ens_q50 = w_qr * rec['qr_q50_1m'] + w_lgb * rec['lgb_q50_1m'] + w_tft * rec['tft_q50_1m']
320
+ ens_q90 = w_qr * rec['qr_q90_1m'] + w_lgb * rec['lgb_q90_1m'] + w_tft * rec['tft_q90_1m']
321
+
322
+ # ════ VOL-ADAPTIVE WIDTH (on blended ensemble) ════
323
+ center = ens_q50
324
+ raw_upper = ens_q90 - center
325
+ raw_lower = center - ens_q10
326
+ train_vol_median = float(y_vol.median())
327
+ vol_ratio = rec['pred_vol'] / train_vol_median if train_vol_median > 0.001 else 1.0
328
+ vol_ratio = np.clip(vol_ratio, 0.85, 2.5) # grid-searched optimal
329
+ rec['pred_q10_1m'] = center - raw_lower * vol_ratio
330
+ rec['pred_q50_1m'] = center
331
+ rec['pred_q90_1m'] = center + raw_upper * vol_ratio
332
+ rec['interval_width_1m'] = (raw_upper + raw_lower) * vol_ratio
333
+ rec['vol_ratio'] = vol_ratio
334
+
335
+ # ════ 3M: INDEPENDENT VOL-ADAPTIVE (lb=1.0, doesn't narrow) ════
336
+ center3 = rec['qr_q50_3m']
337
+ raw_upper3 = rec['qr_q90_3m'] - center3
338
+ raw_lower3 = center3 - rec['qr_q10_3m']
339
+ vol_ratio_3m = np.clip(vol_ratio, 1.0, 2.5) # 3M keeps lb=1.0
340
+ rec['pred_q10_3m'] = center3 - raw_lower3 * vol_ratio_3m
341
+ rec['pred_q50_3m'] = center3
342
+ rec['pred_q90_3m'] = center3 + raw_upper3 * vol_ratio_3m
343
+ rec['interval_width_3m'] = (raw_upper3 + raw_lower3) * vol_ratio_3m
344
+
345
+ # ════ CONFORMAL QR (CQR) ════
346
+ # Split training into proper_train + calibration for conformity scores
347
+ cal_size = max(15, int(len(X_tr_f) * 0.2))
348
+ proper_n = len(X_tr_f) - cal_size
349
+ if proper_n > MIN_TRAIN_SAMPLES:
350
+ X_proper = X_tr_f.iloc[:proper_n]
351
+ X_cal = X_tr_f.iloc[proper_n:]
352
+ y_proper = y_ret.iloc[:proper_n]
353
+ y_cal = y_ret.iloc[proper_n:]
354
+ mask_proper = y_proper.notna()
355
+ mask_cal = y_cal.notna()
356
+ try:
357
+ # Fit QR on proper training set
358
+ qr_lo = QuantileRegressor(quantile=0.10, alpha=0.1, solver='highs')
359
+ qr_hi = QuantileRegressor(quantile=0.90, alpha=0.1, solver='highs')
360
+ qr_lo.fit(X_proper.loc[mask_proper], y_proper.loc[mask_proper])
361
+ qr_hi.fit(X_proper.loc[mask_proper], y_proper.loc[mask_proper])
362
+ # Conformity scores on calibration set
363
+ cal_lo = qr_lo.predict(X_cal.loc[mask_cal])
364
+ cal_hi = qr_hi.predict(X_cal.loc[mask_cal])
365
+ y_cal_vals = y_cal.loc[mask_cal].values
366
+ scores = np.maximum(cal_lo - y_cal_vals, y_cal_vals - cal_hi)
367
+ # Quantile of scores for coverage guarantee
368
+ alpha = 0.20 # Desired miscoverage = 20% → 80% coverage
369
+ n_cal = len(scores)
370
+ q_level = min(1.0, (1 - alpha) * (1 + 1 / n_cal))
371
+ Q_hat = np.quantile(scores, q_level)
372
+ # Apply to test point
373
+ cqr_lo = qr_lo.predict(X_te_f)[0] - Q_hat
374
+ cqr_hi = qr_hi.predict(X_te_f)[0] + Q_hat
375
+ cqr_md = (cqr_lo + cqr_hi) / 2
376
+ rec['cqr_q10_1m'] = float(cqr_lo)
377
+ rec['cqr_q50_1m'] = float(cqr_md)
378
+ rec['cqr_q90_1m'] = float(cqr_hi)
379
+ rec['cqr_Q_hat'] = float(Q_hat)
380
+ except:
381
+ rec['cqr_q10_1m'] = rec['pred_q10_1m']
382
+ rec['cqr_q50_1m'] = rec['pred_q50_1m']
383
+ rec['cqr_q90_1m'] = rec['pred_q90_1m']
384
+ rec['cqr_Q_hat'] = 0.0
385
+ else:
386
+ rec['cqr_q10_1m'] = rec['pred_q10_1m']
387
+ rec['cqr_q50_1m'] = rec['pred_q50_1m']
388
+ rec['cqr_q90_1m'] = rec['pred_q90_1m']
389
+ rec['cqr_Q_hat'] = 0.0
390
+
391
+ # Save pre-blend QR intervals for risk_bias (CQR should not affect directional signal)
392
+ qr_q10_prebend = rec['pred_q10_1m']
393
+ qr_q50_prebend = rec['pred_q50_1m']
394
+ qr_q90_prebend = rec['pred_q90_1m']
395
+
396
+ # ════ BLEND: 80% QR(VA) + 20% CQR → final 1M intervals ════
397
+ # CQR boosts hi-vol coverage (+5pp) while keeping WIS optimal
398
+ w_cqr = 0.20
399
+ rec['pred_q10_1m'] = (1 - w_cqr) * rec['pred_q10_1m'] + w_cqr * rec['cqr_q10_1m']
400
+ rec['pred_q90_1m'] = (1 - w_cqr) * rec['pred_q90_1m'] + w_cqr * rec['cqr_q90_1m']
401
+ rec['interval_width_1m'] = rec['pred_q90_1m'] - rec['pred_q10_1m']
402
+
403
+ # ════ FEATURE IMPORTANCE (LightGBM) ════
404
+ try:
405
+ lgb50 = lgb.LGBMRegressor(
406
+ objective='quantile', alpha=0.50, n_estimators=100,
407
+ max_depth=3, learning_rate=0.05, num_leaves=8,
408
+ min_child_samples=10, verbose=-1, random_state=42
409
+ )
410
+ lgb50.fit(X_tr_f.loc[mask_r], y_ret.loc[mask_r])
411
+ importances = lgb50.feature_importances_
412
+ imp_dict = dict(zip(sel, importances))
413
+ total_imp = sum(importances) if sum(importances) > 0 else 1
414
+ for group, members in FACTOR_GROUPS.items():
415
+ group_imp = sum(imp_dict.get(f, 0) for f in members if f in imp_dict)
416
+ rec[f'shap_{group}'] = float(group_imp / total_imp)
417
+ rec['shap_base'] = float(lgb50.predict(X_te_f)[0])
418
+ shap_records.append({
419
+ 'date': str(test_date),
420
+ 'features': sel,
421
+ 'importances': importances.tolist(),
422
+ 'normalized': (importances / total_imp).tolist(),
423
+ 'lgb_pred': float(lgb50.predict(X_te_f)[0]),
424
+ })
425
+ except:
426
+ for g in FACTOR_GROUPS:
427
+ rec[f'shap_{g}'] = 0.0
428
+ rec['shap_base'] = 0.0
429
+
430
+ # ════ RISK LEVEL ════
431
+ # Use pre-blend QR intervals for bias (CQR widens symmetrically, distorts bias signal)
432
+ upside_tail = qr_q90_prebend - qr_q50_prebend
433
+ downside_tail = qr_q50_prebend - qr_q10_prebend
434
+ vol_pctile = (y_vol < rec['pred_vol']).mean()
435
+ rec['risk_level'] = 'High' if vol_pctile >= 0.70 else ('Medium' if vol_pctile >= 0.40 else 'Low')
436
+ rec['risk_bias'] = 'Upward' if upside_tail > 1.15 * downside_tail else (
437
+ 'Downward' if downside_tail > 1.15 * upside_tail else 'Balanced')
438
+ rec['vol_pctile'] = vol_pctile
439
+
440
+ # ════ FACTOR ATTRIBUTION (Ridge) ════
441
+ factor_map = {}
442
+ for f in sel:
443
+ for group, members in FACTOR_GROUPS.items():
444
+ if f in members:
445
+ factor_map.setdefault(group, []).append(f)
446
+ break
447
+ attr_window = min(60, len(X_tr_f))
448
+ X_attr = X_tr_f.iloc[-attr_window:]
449
+ y_attr = y_ret.iloc[-attr_window:]
450
+ valid_attr = y_attr.notna()
451
+ coefs = {}
452
+ x_vals = {}
453
+ if valid_attr.sum() > MIN_TRAIN_SAMPLES:
454
+ try:
455
+ lr_attr = Ridge(alpha=1.0)
456
+ lr_attr.fit(X_attr.loc[valid_attr], y_attr.loc[valid_attr])
457
+ coefs = dict(zip(sel, lr_attr.coef_))
458
+ x_vals = dict(X_te_f.iloc[0])
459
+ for group in FACTOR_GROUPS:
460
+ gf = factor_map.get(group, [])
461
+ contrib = sum(coefs.get(f, 0) * x_vals.get(f, 0) for f in gf)
462
+ rec[f'factor_{group}'] = float(contrib)
463
+ abs_contribs = {g: abs(rec.get(f'factor_{g}', 0)) for g in factor_map}
464
+ rec['top_factor'] = max(abs_contribs, key=abs_contribs.get) if abs_contribs else 'Unknown'
465
+ except:
466
+ rec['top_factor'] = 'Unknown'
467
+ else:
468
+ rec['top_factor'] = 'Unknown'
469
+
470
+ # ════ REGIME DETECTION ════
471
+ regime_info = detect_regime(sel, coefs, x_vals, rec['pred_vol'])
472
+ rec['regime_match'] = regime_info['regime_match']
473
+ rec['regime_similarity'] = regime_info['regime_similarity']
474
+ rec['regime_type'] = regime_info['regime_type']
475
+
476
+ # ════ SCENARIOS ════
477
+ scenarios = {}
478
+ for scen_name, modifications in [
479
+ ('vix_shock', {'vix_lag1': 2.0, 'vix_lag2': 1.5}),
480
+ ('supply_cut', {'supply_saudi': -1.5, 'rig_count_us_new': -1.0}),
481
+ ('demand_crash', {'pmi_us_mfg': -2.0, 'ipi_us': -1.5}),
482
+ ]:
483
+ X_stress = X_te_f.copy()
484
+ for feat, mult in modifications.items():
485
+ if feat in X_stress.columns:
486
+ X_stress[feat] = X_stress[feat] + mult
487
+ try:
488
+ stress_q50 = lgb50.predict(X_stress)[0]
489
+ scenarios[scen_name] = float(stress_q50)
490
+ except:
491
+ scenarios[scen_name] = rec.get('pred_q50_1m', 0.0)
492
+ rec['scenario_base'] = rec['pred_q50_1m']
493
+ rec['scenario_vix_shock'] = scenarios.get('vix_shock', 0.0)
494
+ rec['scenario_supply_cut'] = scenarios.get('supply_cut', 0.0)
495
+ rec['scenario_demand_crash'] = scenarios.get('demand_crash', 0.0)
496
+
497
+ results.append(rec)
498
+
499
+ # ════ LIVE FORECAST: 预测无目标的最新月份 ════
500
+ if wf_end < len(panel) and len(results) > 0:
501
+ print(f"\n Live Forecast: {len(panel) - wf_end} 个最新月份 (无实际值)")
502
+ last_rec = results[-1]
503
+ for li in range(wf_end, len(panel)):
504
+ test_df = panel.iloc[li:li + 1]
505
+ test_date = panel.index[li]
506
+ train_df = panel.iloc[max(0, li - train_window):li]
507
+
508
+ avail = [f for f in features if train_df[f].notna().mean() > 0.8]
509
+ if len(avail) < 3:
510
+ continue
511
+
512
+ X_tr = train_df[avail].copy()
513
+ X_te = test_df[avail].copy()
514
+ for col in avail:
515
+ med = X_tr[col].median()
516
+ X_tr[col] = X_tr[col].fillna(med)
517
+ X_te[col] = X_te[col].fillna(med)
518
+
519
+ scaler = StandardScaler()
520
+ X_tr_s = pd.DataFrame(scaler.fit_transform(X_tr), columns=avail, index=train_df.index)
521
+ X_te_s = pd.DataFrame(scaler.transform(X_te), columns=avail, index=test_df.index)
522
+
523
+ # 使用固定特征 (从最后一次 walk-forward 的 sel)
524
+ sel_live = [f for f in sel if f in avail]
525
+ if len(sel_live) < 2:
526
+ sel_live = avail[:MAX_FEATURES]
527
+ X_tr_f = X_tr_s[sel_live]
528
+ X_te_f = X_te_s[sel_live]
529
+
530
+ ewma_now = test_df['ewma_vol'].values[0] if 'ewma_vol' in test_df.columns else 0.05
531
+ baseline_vol = float(ewma_now) if not np.isnan(ewma_now) else 0.05
532
+
533
+ live_rec = {
534
+ 'test_date': test_date,
535
+ 'actual_ret_1m': np.nan,
536
+ 'actual_ret_3m': np.nan,
537
+ 'actual_vol': np.nan,
538
+ 'actual_up': np.nan,
539
+ 'baseline_ewma': baseline_vol,
540
+ 'is_live': True,
541
+ }
542
+
543
+ # 用最新的训练数据重新拟合轻量模型
544
+ y_ret = train_df['target_ret_1m'].dropna()
545
+ y_vol = train_df['target_abs_ret_1m'].dropna()
546
+
547
+ try:
548
+ # QR 1M
549
+ for alpha, suffix in [(0.05, 'q10'), (0.5, 'q50'), (0.95, 'q90')]:
550
+ qr = QuantileRegressor(quantile=alpha, alpha=0.1, solver='highs')
551
+ mask_qr = y_ret.index.isin(X_tr_f.index)
552
+ y_qr = y_ret[mask_qr]
553
+ X_qr = X_tr_f.loc[y_qr.index]
554
+ if len(X_qr) > 10:
555
+ qr.fit(X_qr, y_qr)
556
+ val = float(qr.predict(X_te_f)[0])
557
+ live_rec[f'pred_{suffix}_1m'] = val
558
+
559
+ # LightGBM
560
+ mask_lgb = y_ret.index.isin(X_tr_f.index)
561
+ y_lgb = y_ret[mask_lgb]
562
+ X_lgb = X_tr_f.loc[y_lgb.index]
563
+ if len(X_lgb) > 10:
564
+ lgb50 = lgb.LGBMRegressor(objective='quantile', alpha=0.5,
565
+ n_estimators=200, max_depth=4, verbose=-1)
566
+ lgb50.fit(X_lgb, y_lgb)
567
+ live_rec['lgb_q50'] = float(lgb50.predict(X_te_f)[0])
568
+
569
+ # Vol
570
+ mask_vol = y_vol.index.isin(X_tr_f.index)
571
+ y_v = y_vol[mask_vol]
572
+ X_v = X_tr_f.loc[y_v.index]
573
+ if len(X_v) > 10:
574
+ ridge = Ridge(alpha=1.0)
575
+ ridge.fit(X_v, y_v)
576
+ live_rec['pred_vol'] = max(float(ridge.predict(X_te_f)[0]), baseline_vol * 0.5)
577
+ else:
578
+ live_rec['pred_vol'] = baseline_vol
579
+ except Exception as e:
580
+ live_rec['pred_vol'] = baseline_vol
581
+
582
+ # Risk level + bias
583
+ lo = live_rec.get('pred_q10_1m', -0.05)
584
+ hi = live_rec.get('pred_q90_1m', 0.05)
585
+ q50 = live_rec.get('pred_q50_1m', 0.0)
586
+ width = abs(hi - lo)
587
+ live_rec['risk_level'] = 'High' if width > 0.15 else 'Medium' if width > 0.08 else 'Low'
588
+ live_rec['risk_score'] = width
589
+ upside = hi - q50
590
+ downside = q50 - lo
591
+ live_rec['risk_bias'] = 'Upward' if upside > 1.15 * downside else (
592
+ 'Downward' if downside > 1.15 * upside else 'Balanced')
593
+ live_rec['vol_pctile'] = 0.5 # 无法计算,默认中等
594
+
595
+ # Copy structure from last record
596
+ for key in ['regime_match', 'regime_similarity', 'regime_type',
597
+ 'scenario_base', 'scenario_vix_shock', 'scenario_supply_cut',
598
+ 'scenario_demand_crash', 'top_factor']:
599
+ if key not in live_rec and key in last_rec:
600
+ live_rec[key] = last_rec[key]
601
+
602
+ # Regime detection
603
+ x_vals = {f: float(X_te_f[f].values[0]) for f in sel_live}
604
+ coefs = {}
605
+ regime_info = detect_regime(sel_live, coefs, x_vals, live_rec.get('pred_vol', 0.05))
606
+ live_rec.update(regime_info)
607
+
608
+ # Scenarios
609
+ for scen_name, modifications in [
610
+ ('vix_shock', {'vix_lag1': 2.0, 'vix_lag2': 1.5}),
611
+ ('supply_cut', {'supply_saudi': -1.5, 'rig_count_us_new': -1.0}),
612
+ ('demand_crash', {'pmi_us_mfg': -2.0, 'ipi_us': -1.5}),
613
+ ]:
614
+ X_stress = X_te_f.copy()
615
+ for feat, mult in modifications.items():
616
+ if feat in X_stress.columns:
617
+ X_stress[feat] = X_stress[feat] + mult
618
+ try:
619
+ live_rec[f'scenario_{scen_name}'] = float(lgb50.predict(X_stress)[0])
620
+ except:
621
+ live_rec[f'scenario_{scen_name}'] = live_rec.get('pred_q50_1m', 0.0)
622
+ live_rec['scenario_base'] = live_rec.get('pred_q50_1m', 0.0)
623
+
624
+ # Factor attribution (simplified)
625
+ for group in FACTOR_GROUPS:
626
+ live_rec[f'factor_{group}'] = last_rec.get(f'factor_{group}', 0.0)
627
+
628
+ results.append(live_rec)
629
+ print(f" ✓ {test_date.strftime('%Y-%m')}: Q50={live_rec.get('pred_q50_1m', 0):.3f}, "
630
+ f"Risk={live_rec['risk_level']}")
631
+
632
+ return pd.DataFrame(results), shap_records
core/feature_selection.py ADDED
@@ -0,0 +1,164 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ """
2
+ feature_selection.py — 特征筛选漏斗:329个原始指标 → 17个入选特征
3
+ =================================================================
4
+ 完整的特征筛选流程:
5
+ Stage 1: 数据可用性筛选(缺失率 < 30%,时间覆盖 > 120月)
6
+ Stage 2: 单变量相关性(与油价收益率 |corr| > 0.05)
7
+ Stage 3: 共线性过滤(VIF / corr-cluster 去重)
8
+ Stage 4: MI / Granger 因果(非线性信息量)
9
+ Stage 5: 经济学意义验证(因子组分配)
10
+ """
11
+
12
+ import pandas as pd
13
+ import numpy as np
14
+ import os
15
+ import glob
16
+
17
+ from config import DATA_DIR, FEATURES, FACTOR_GROUPS, PRICE_COL
18
+
19
+
20
+ def run_feature_funnel(panel_path, raw_dir=None):
21
+ """执行完整的特征筛选漏斗并返回每阶段结果。"""
22
+ raw_dir = raw_dir or DATA_DIR
23
+ panel = pd.read_csv(panel_path, index_col=0, parse_dates=True)
24
+
25
+ # ── Stage 0: Inventory all raw features ──
26
+ all_features = set()
27
+ file_info = []
28
+ csv_files = glob.glob(os.path.join(raw_dir, '*.csv'))
29
+ for f in csv_files:
30
+ try:
31
+ df = pd.read_csv(f, nrows=5)
32
+ cols = [c for c in df.columns if c.lower() not in
33
+ ('date', 'date_str', 'date_num', 'year', 'month', 'day', 'unnamed: 0')]
34
+ all_features.update(cols)
35
+ file_info.append({'file': os.path.basename(f), 'n_cols': len(cols), 'cols': cols[:10]})
36
+ except:
37
+ pass
38
+
39
+ total_raw = len(all_features)
40
+ print(f"Stage 0: 原始指标 {total_raw} 个 (来自 {len(csv_files)} 个CSV)")
41
+
42
+ # ── Stage 1: Availability filter ──
43
+ panel_cols = [c for c in panel.columns if c != PRICE_COL and 'target' not in c.lower()
44
+ and 'ewma' not in c.lower()]
45
+ stage1 = []
46
+ for col in panel_cols:
47
+ if col not in panel.columns:
48
+ continue
49
+ series = panel[col]
50
+ missing_rate = series.isna().mean()
51
+ n_valid = series.notna().sum()
52
+ if missing_rate < 0.30 and n_valid >= 120:
53
+ stage1.append({
54
+ 'feature': col,
55
+ 'missing_rate': round(missing_rate, 3),
56
+ 'n_valid': int(n_valid),
57
+ 'mean': round(float(series.mean()), 4) if series.notna().any() else None,
58
+ })
59
+
60
+ stage1_features = [s['feature'] for s in stage1]
61
+ print(f"Stage 1: 数据可用性 → {len(stage1_features)} 个 (缺失率<30%, 覆盖>120月)")
62
+
63
+ # ── Stage 2: Univariate correlation filter ──
64
+ ret = panel[PRICE_COL].pct_change(1)
65
+ stage2 = []
66
+ for feat in stage1_features:
67
+ try:
68
+ corr = float(panel[feat].corr(ret))
69
+ abs_corr = abs(corr)
70
+ if abs_corr > 0.03: # Relaxed threshold for monthly data
71
+ stage2.append({
72
+ 'feature': feat,
73
+ 'corr_with_return': round(corr, 4),
74
+ 'abs_corr': round(abs_corr, 4),
75
+ })
76
+ except:
77
+ pass
78
+
79
+ stage2.sort(key=lambda x: x['abs_corr'], reverse=True)
80
+ stage2_features = [s['feature'] for s in stage2]
81
+ print(f"Stage 2: 单变量相关性 → {len(stage2_features)} 个 (|corr|>0.03)")
82
+
83
+ # ── Stage 3: Collinearity filter ──
84
+ # Remove highly correlated features (keep the one with higher abs_corr to return)
85
+ stage3_features = list(stage2_features)
86
+ corr_matrix = panel[stage3_features].corr()
87
+ to_drop = set()
88
+ corr_lookup = {s['feature']: s['abs_corr'] for s in stage2}
89
+ for i in range(len(stage3_features)):
90
+ if stage3_features[i] in to_drop:
91
+ continue
92
+ for j in range(i + 1, len(stage3_features)):
93
+ if stage3_features[j] in to_drop:
94
+ continue
95
+ pair_corr = abs(corr_matrix.iloc[i, j])
96
+ if pair_corr > 0.85:
97
+ f_i, f_j = stage3_features[i], stage3_features[j]
98
+ weaker = f_j if corr_lookup.get(f_i, 0) >= corr_lookup.get(f_j, 0) else f_i
99
+ to_drop.add(weaker)
100
+
101
+ stage3_features = [f for f in stage3_features if f not in to_drop]
102
+ stage3 = [s for s in stage2 if s['feature'] in stage3_features]
103
+ print(f"Stage 3: 共线性过滤 → {len(stage3_features)} 个 (pair |corr|<0.85)")
104
+
105
+ # ── Stage 4: MI score ──
106
+ from sklearn.feature_selection import mutual_info_regression
107
+ stage4 = []
108
+ X = panel[stage3_features].dropna()
109
+ y = panel.loc[X.index, PRICE_COL].pct_change(1).iloc[1:]
110
+ X = X.iloc[1:]
111
+ valid = y.notna() & X.notna().all(axis=1)
112
+ if valid.sum() > 50:
113
+ mi_scores = mutual_info_regression(X.loc[valid], y.loc[valid], random_state=42, n_neighbors=5)
114
+ for feat, mi_val in sorted(zip(stage3_features, mi_scores), key=lambda x: x[1], reverse=True):
115
+ stage4.append({
116
+ 'feature': feat,
117
+ 'mi_score': round(float(mi_val), 4),
118
+ 'corr': round(float(panel[feat].corr(ret)), 4),
119
+ })
120
+
121
+ stage4_features = [s['feature'] for s in stage4]
122
+ print(f"Stage 4: MI 非线性筛选 → {len(stage4_features)} 个")
123
+
124
+ # ── Stage 5: Final selection (match with FEATURES list) ──
125
+ final_selected = [f for f in FEATURES if f in panel.columns]
126
+ final_rejected = [f for f in stage4_features if f not in final_selected][:10]
127
+
128
+ # Build factor assignment
129
+ stage5 = []
130
+ for feat in final_selected:
131
+ group = 'Other'
132
+ for g, members in FACTOR_GROUPS.items():
133
+ if feat in members:
134
+ group = g
135
+ break
136
+ mi_val = next((s['mi_score'] for s in stage4 if s['feature'] == feat), 0)
137
+ corr_val = next((s['corr'] for s in stage4 if s['feature'] == feat), 0)
138
+ stage5.append({
139
+ 'feature': feat,
140
+ 'factor_group': group,
141
+ 'mi_score': mi_val,
142
+ 'corr': corr_val,
143
+ })
144
+
145
+ print(f"Stage 5: 最终选择 → {len(final_selected)} 个 (经济学意义+因子分配)")
146
+
147
+ # ── Build funnel summary ──
148
+ funnel = {
149
+ 'total_raw': total_raw,
150
+ 'n_csv_files': len(csv_files),
151
+ 'stages': [
152
+ {'stage': 0, 'name': '原始指标', 'count': total_raw, 'rule': f'{len(csv_files)}个CSV文件'},
153
+ {'stage': 1, 'name': '数据可用性', 'count': len(stage1_features), 'rule': '缺失率<30%, 覆盖>120月'},
154
+ {'stage': 2, 'name': '单变量相关性', 'count': len(stage2_features), 'rule': '|corr(feature, return)|>0.03'},
155
+ {'stage': 3, 'name': '共线性去重', 'count': len(stage3_features), 'rule': '组内pair |corr|<0.85'},
156
+ {'stage': 4, 'name': 'MI非线性筛选', 'count': len(stage4_features), 'rule': 'MI(feature; return)排序'},
157
+ {'stage': 5, 'name': '最终选择', 'count': len(final_selected), 'rule': '经济学意义+因子组分配'},
158
+ ],
159
+ 'final_features': stage5,
160
+ 'rejected_examples': final_rejected,
161
+ 'file_inventory': file_info[:15], # Top 15 files
162
+ }
163
+
164
+ return funnel
core/hedging.py ADDED
@@ -0,0 +1,326 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ """
2
+ hedging.py — 对冲决策计算器
3
+ ==============================
4
+ 核心功能:
5
+ 1. 给定企业月度燃油/原料消耗金额
6
+ 2. 根据当前风险预测(区间+因子+regime)
7
+ 3. 计算不同对冲比例下的成本-收益矩阵
8
+ 4. 输出推荐对冲比例和工具建议
9
+
10
+ 对冲逻辑:
11
+ - 不对冲:完全暴露在油价波动中
12
+ - 部分对冲:锁定一部分成本,保留一部分上行/下行暴露
13
+ - 完全对冲:完全锁定成本,放弃上行收益但消除下行风险
14
+ - 对冲成本 = 远期升水(contango)+ 期权时间价值(简化为波动率函数)
15
+ """
16
+
17
+ import numpy as np
18
+ from config import INDUSTRIES, INDUSTRY_ZH
19
+
20
+
21
+ # ═══════════════════════════════════════════════════════════
22
+ # INDUSTRY COST SENSITIVITY (油价弹性系数,基于公开研究)
23
+ # ═══════════════════════════════════════════════════════════
24
+
25
+ # 油价变动1%对行业成本/利润的影响(弹性系数,文献值+经验校准)
26
+ COST_ELASTICITY = {
27
+ 'Aviation': 0.35, # 航空燃油占运营成本 25-40%
28
+ 'Logistics': 0.22, # 柴油占物流成本 15-25%
29
+ 'Chemicals': 0.28, # 原油是石脑油/乙烯原料
30
+ 'Manufacturing': 0.12, # 能源占制造成本 8-15%
31
+ 'Upstream_OG': -0.60, # 上游:油价上涨 = 收入增加
32
+ }
33
+
34
+ # 典型企业月度油品相关支出(百万美元,用于示例计算)
35
+ TYPICAL_EXPOSURE = {
36
+ 'Aviation': 50.0, # 大型航司月均燃油 $50M
37
+ 'Logistics': 15.0, # 大型物流公司 $15M
38
+ 'Chemicals': 30.0, # 大型化工企业 $30M
39
+ 'Manufacturing': 8.0, # 中型制造企业 $8M
40
+ 'Upstream_OG': 80.0, # 油气公司产量对应营收
41
+ }
42
+
43
+ # 对冲成本系数(占名义价值的百分比/月,含远期升水+交易成本)
44
+ HEDGE_COST_RATES = {
45
+ 'futures': 0.002, # 期货锁价:~0.2%/月(远期升水+保证金机会成本)
46
+ 'put': 0.008, # 看跌期权(保护性):~0.8%/月(时间价值衰减)
47
+ 'collar': 0.003, # 零成本领:~0.3%/月(放弃部分上行)
48
+ }
49
+
50
+
51
+ # ═══════════════════════════════════════════════════════════
52
+ # HEDGING DECISION ENGINE
53
+ # ═══════════════════════════════════════════════════════════
54
+
55
+ def compute_hedge_matrix(pred_q10, pred_q50, pred_q90, pred_vol,
56
+ risk_level, risk_bias, industry,
57
+ monthly_exposure=None):
58
+ """
59
+ 计算不同对冲比例下的成本-收益矩阵。
60
+
61
+ Parameters
62
+ ----------
63
+ pred_q10, pred_q50, pred_q90 : float
64
+ 1M 预测区间(收益率,如 -0.11 表示 -11%)
65
+ pred_vol : float
66
+ 预测波动率
67
+ risk_level : str
68
+ 'Low' / 'Medium' / 'High'
69
+ risk_bias : str
70
+ 'Upward' / 'Balanced' / 'Downward'
71
+ industry : str
72
+ 行业标识
73
+ monthly_exposure : float or None
74
+ 月度油品暴露金额(百万美元),None则使用典型值
75
+
76
+ Returns
77
+ -------
78
+ dict with keys:
79
+ 'recommended_ratio': 推荐对冲比例
80
+ 'recommended_tool': 推荐工具
81
+ 'rationale': 推荐理由
82
+ 'matrix': 对冲比例 × 情景 的成本矩阵
83
+ """
84
+ exposure = monthly_exposure or TYPICAL_EXPOSURE.get(industry, 20.0)
85
+ elasticity = COST_ELASTICITY.get(industry, 0.20)
86
+ is_upstream = industry == 'Upstream_OG'
87
+
88
+ # 情景定义
89
+ scenarios = {
90
+ 'downside': pred_q10, # 下行风险(10%分位)
91
+ 'base': pred_q50, # 基准
92
+ 'upside': pred_q90, # 上行风险(90%分位)
93
+ }
94
+
95
+ # 对冲比例选项
96
+ hedge_ratios = [0.0, 0.25, 0.50, 0.75, 1.0]
97
+
98
+ # 计算矩阵
99
+ matrix = []
100
+ for ratio in hedge_ratios:
101
+ row = {'hedge_ratio': ratio, 'hedge_ratio_pct': f'{ratio*100:.0f}%'}
102
+ for scen_name, price_change in scenarios.items():
103
+ # 未对冲部分的损益
104
+ unhedged_impact = exposure * price_change * elasticity * (1 - ratio)
105
+ # 对冲部分:锁定成本,不受价格影响,但有对冲成本
106
+ hedge_cost = exposure * ratio * HEDGE_COST_RATES['futures']
107
+ # 总净影响 = 未对冲损益 - 对冲成本
108
+ net_impact = unhedged_impact - hedge_cost
109
+
110
+ # 上游油气反向:油价涨=收入增
111
+ if is_upstream:
112
+ net_impact = -net_impact # 对冲是锁定收入
113
+
114
+ row[f'{scen_name}_impact'] = round(net_impact, 2)
115
+
116
+ # VaR: 最大损失
117
+ row['worst_case'] = min(row['downside_impact'], row['upside_impact'])
118
+ row['best_case'] = max(row['downside_impact'], row['upside_impact'])
119
+ row['range'] = round(row['best_case'] - row['worst_case'], 2)
120
+ matrix.append(row)
121
+
122
+ # ── 推荐逻辑 ──
123
+ recommended_ratio, recommended_tool, rationale = _recommend(
124
+ risk_level, risk_bias, pred_vol, elasticity, is_upstream, pred_q10, pred_q90
125
+ )
126
+
127
+ # ── 各工具成本比较 ──
128
+ tool_comparison = []
129
+ for tool, rate in HEDGE_COST_RATES.items():
130
+ monthly_cost = exposure * recommended_ratio * rate
131
+ tool_comparison.append({
132
+ 'tool': tool,
133
+ 'tool_zh': {'futures': '期货锁价', 'put': '看跌期权', 'collar': '零成本领'}[tool],
134
+ 'monthly_cost': round(monthly_cost, 2),
135
+ 'annualized_cost': round(monthly_cost * 12, 2),
136
+ 'cost_pct': round(rate * 100, 2),
137
+ })
138
+
139
+ return {
140
+ 'industry': industry,
141
+ 'industry_zh': INDUSTRY_ZH.get(industry, industry),
142
+ 'exposure': exposure,
143
+ 'elasticity': elasticity,
144
+ 'recommended_ratio': recommended_ratio,
145
+ 'recommended_ratio_pct': f'{recommended_ratio*100:.0f}%',
146
+ 'recommended_tool': recommended_tool,
147
+ 'rationale': rationale,
148
+ 'matrix': matrix,
149
+ 'tool_comparison': tool_comparison,
150
+ }
151
+
152
+
153
+ def _recommend(risk_level, risk_bias, pred_vol, elasticity, is_upstream, q10, q90):
154
+ """推荐对冲比例和工具。"""
155
+ # 基础比例由风险等级决定
156
+ base_ratio = {'Low': 0.25, 'Medium': 0.50, 'High': 0.75}.get(risk_level, 0.50)
157
+
158
+ # 偏置调整
159
+ if is_upstream:
160
+ # 上游:下行=收入减少=需要对冲
161
+ if risk_bias == 'Downward':
162
+ base_ratio += 0.15
163
+ elif risk_bias == 'Upward':
164
+ base_ratio -= 0.10
165
+ else:
166
+ # 下游/成本端:上行=成本增加=需要对冲
167
+ if risk_bias == 'Upward':
168
+ base_ratio += 0.15
169
+ elif risk_bias == 'Downward':
170
+ base_ratio -= 0.10
171
+
172
+ # 波动率调整
173
+ if pred_vol > 0.08:
174
+ base_ratio += 0.10 # 高波动 → 多对冲
175
+
176
+ # 弹性调整:暴露越大越应该对冲
177
+ if abs(elasticity) > 0.30:
178
+ base_ratio += 0.05
179
+
180
+ # 尾部风险调整
181
+ tail_risk = abs(q10) if not is_upstream else abs(q90)
182
+ if tail_risk > 0.15: # 尾部超过15%
183
+ base_ratio += 0.10
184
+
185
+ base_ratio = max(0.0, min(1.0, round(base_ratio / 0.05) * 0.05)) # 5%步进
186
+
187
+ # 工具推荐
188
+ if risk_level == 'High' and pred_vol > 0.06:
189
+ tool = 'collar'
190
+ reason = f'高风险+高波动环境,零成本领策略平衡保护与成本'
191
+ elif risk_bias == 'Upward' and not is_upstream:
192
+ tool = 'futures'
193
+ reason = f'上行偏置明显,期货锁价直接锁定成本'
194
+ elif risk_bias == 'Downward' and is_upstream:
195
+ tool = 'put'
196
+ reason = f'下行风险突出,看跌期权保留上行收益空间'
197
+ elif pred_vol < 0.04:
198
+ tool = 'futures'
199
+ reason = f'低波动环境,简单期货锁价成本最低'
200
+ else:
201
+ tool = 'collar'
202
+ reason = f'均衡环境下零成本领提供灵活保护'
203
+
204
+ risk_zh = {'Low': '低', 'Medium': '中等', 'High': '高'}[risk_level]
205
+ bias_zh = {'Upward': '上行', 'Downward': '下行', 'Balanced': '均衡'}[risk_bias]
206
+
207
+ rationale = (
208
+ f"当前风险{risk_zh}、偏置{bias_zh}、预测波动率{pred_vol*100:.1f}%。"
209
+ f"建议对冲{base_ratio*100:.0f}%暴露。{reason}。"
210
+ )
211
+
212
+ return base_ratio, tool, rationale
213
+
214
+
215
+ def compute_all_industry_hedges(row):
216
+ """为所有行业计算对冲建议。"""
217
+ results = {}
218
+ for ind in INDUSTRIES:
219
+ results[ind] = compute_hedge_matrix(
220
+ pred_q10=row.get('pred_q10_1m', -0.10),
221
+ pred_q50=row.get('pred_q50_1m', 0.0),
222
+ pred_q90=row.get('pred_q90_1m', 0.10),
223
+ pred_vol=row.get('pred_vol', 0.05),
224
+ risk_level=row.get('risk_level', 'Medium'),
225
+ risk_bias=row.get('risk_bias', 'Balanced'),
226
+ industry=ind,
227
+ )
228
+ return results
229
+
230
+
231
+ # ═══════════════════════════════════════════════════════════
232
+ # HEDGING BACKTEST
233
+ # ═══════════════════════════════════════════════════════════
234
+
235
+ def backtest_hedging(results_df, lookback=60):
236
+ """
237
+ 回测对冲策略:逐月计算 "按推荐比例对冲" vs "完全不对冲" 的累计成本差异。
238
+
239
+ Parameters
240
+ ----------
241
+ results_df : DataFrame
242
+ walk-forward 预测结果(含 risk_level, risk_bias, pred_vol, actual_ret_1m 等)
243
+ lookback : int
244
+ 回测月数(默认 60 个月)
245
+
246
+ Returns
247
+ -------
248
+ dict: 各行业的月度时间序列 + 累计节省金额
249
+ """
250
+ import pandas as pd
251
+
252
+ df = results_df.tail(lookback).copy()
253
+ backtest = {}
254
+
255
+ for ind in INDUSTRIES:
256
+ exposure = TYPICAL_EXPOSURE.get(ind, 20.0)
257
+ elasticity = COST_ELASTICITY.get(ind, 0.20)
258
+ is_upstream = ind == 'Upstream_OG'
259
+ tool_rate = HEDGE_COST_RATES['futures']
260
+
261
+ monthly = []
262
+ cum_unhedged = 0.0
263
+ cum_hedged = 0.0
264
+
265
+ for _, row in df.iterrows():
266
+ actual_ret = row.get('actual_ret_1m', 0)
267
+ if np.isnan(actual_ret):
268
+ continue
269
+
270
+ # Determine recommended hedge ratio for this month
271
+ rl = row.get('risk_level', 'Medium')
272
+ rb = row.get('risk_bias', 'Balanced')
273
+ pv = row.get('pred_vol', 0.05)
274
+ q10 = row.get('pred_q10_1m', -0.10)
275
+ q90 = row.get('pred_q90_1m', 0.10)
276
+ ratio, _, _ = _recommend(rl, rb, pv, elasticity, is_upstream, q10, q90)
277
+
278
+ # Unhedged P&L: full exposure to price change
279
+ price_impact = actual_ret * elasticity
280
+ if is_upstream:
281
+ # Upstream: revenue = price * volume. Price up = good.
282
+ unhedged_pnl = exposure * actual_ret # Simplified: revenue change
283
+ hedged_pnl = exposure * actual_ret * (1 - ratio) - exposure * ratio * tool_rate
284
+ else:
285
+ # Downstream: cost = price * consumption. Price up = bad.
286
+ unhedged_pnl = -exposure * actual_ret * elasticity
287
+ hedged_pnl = -exposure * actual_ret * elasticity * (1 - ratio) - exposure * ratio * tool_rate
288
+
289
+ cum_unhedged += unhedged_pnl
290
+ cum_hedged += hedged_pnl
291
+ saving = cum_unhedged - cum_hedged # Positive = hedging saved money
292
+
293
+ monthly.append({
294
+ 'date': str(row.get('test_date', '')),
295
+ 'actual_ret': round(float(actual_ret) * 100, 2),
296
+ 'hedge_ratio': round(ratio, 2),
297
+ 'risk_level': rl,
298
+ 'unhedged_pnl': round(unhedged_pnl, 2),
299
+ 'hedged_pnl': round(hedged_pnl, 2),
300
+ 'cum_unhedged': round(cum_unhedged, 2),
301
+ 'cum_hedged': round(cum_hedged, 2),
302
+ 'cum_saving': round(saving, 2),
303
+ })
304
+
305
+ # Summary stats
306
+ total_saving = cum_unhedged - cum_hedged
307
+ # Volatility reduction
308
+ unhedged_vol = np.std([m['unhedged_pnl'] for m in monthly]) if monthly else 0
309
+ hedged_vol = np.std([m['hedged_pnl'] for m in monthly]) if monthly else 0
310
+ vol_reduction = 1 - hedged_vol / unhedged_vol if unhedged_vol > 0 else 0
311
+ # Max drawdown
312
+ max_dd_unhedged = min(m['cum_unhedged'] for m in monthly) if monthly else 0
313
+ max_dd_hedged = min(m['cum_hedged'] for m in monthly) if monthly else 0
314
+
315
+ backtest[ind] = {
316
+ 'industry_zh': INDUSTRY_ZH.get(ind, ind),
317
+ 'months': len(monthly),
318
+ 'total_saving': round(total_saving, 2),
319
+ 'vol_reduction': round(vol_reduction * 100, 1),
320
+ 'max_dd_unhedged': round(max_dd_unhedged, 2),
321
+ 'max_dd_hedged': round(max_dd_hedged, 2),
322
+ 'dd_improvement': round(max_dd_hedged - max_dd_unhedged, 2),
323
+ 'monthly': monthly,
324
+ }
325
+
326
+ return backtest
core/tft_model.py ADDED
@@ -0,0 +1,211 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ """
2
+ core/tft_model.py — Temporal Fusion Transformer 分位数预测模块
3
+ ================================================================
4
+ 基于 Google Research (2021) TFT 架构, 通过 Darts 框架实现.
5
+ - 内置 Variable Selection Network: 自动学习因子重要性
6
+ - 内置 Temporal Attention: 识别关键时间步
7
+ - 原生多分位数输出: Q10/Q50/Q90
8
+ - 轻量化配置 (17K params): 适配小样本时序 (~276 月)
9
+ """
10
+
11
+ import warnings
12
+ import logging
13
+ import numpy as np
14
+ import pandas as pd
15
+
16
+ # Suppress verbose logging
17
+ for _name in ['pytorch_lightning', 'lightning', 'pl', 'darts', 'lightning.pytorch']:
18
+ logging.getLogger(_name).setLevel(logging.ERROR)
19
+ warnings.filterwarnings('ignore', category=FutureWarning)
20
+ warnings.filterwarnings('ignore', category=UserWarning)
21
+
22
+ from darts import TimeSeries
23
+ from darts.models import TFTModel
24
+ from darts.utils.likelihood_models import QuantileRegression
25
+ from darts.dataprocessing.transformers import Scaler
26
+
27
+
28
+ class TFTQuantilePredictor:
29
+ """
30
+ TFT 分位数预测器 — 用于 walk-forward 预测循环.
31
+
32
+ 输出: Q10, Q50, Q90 三个分位数预测值
33
+
34
+ Architecture:
35
+ - input_chunk_length=24 (回看2年月度数据)
36
+ - hidden_size=16 (轻量级, 防过拟合)
37
+ - lstm_layers=1, attention_heads=1
38
+ - QuantileRegression likelihood [0.10, 0.50, 0.90]
39
+ - 早停 + 低 epoch (快速训练)
40
+ """
41
+
42
+ def __init__(self, input_chunk_length=24, hidden_size=16,
43
+ lstm_layers=1, n_heads=1, n_epochs=15,
44
+ batch_size=32, use_gpu=False):
45
+ self.input_chunk_length = input_chunk_length
46
+ self.hidden_size = hidden_size
47
+ self.lstm_layers = lstm_layers
48
+ self.n_heads = n_heads
49
+ self.n_epochs = n_epochs
50
+ self.batch_size = batch_size
51
+ self.use_gpu = use_gpu
52
+ self.model = None
53
+ self.scaler_y = Scaler()
54
+ self.scaler_cov = Scaler()
55
+ self._fitted = False
56
+
57
+ def _build_model(self):
58
+ """构建 TFT 模型实例。"""
59
+ accelerator = 'gpu' if self.use_gpu else 'cpu'
60
+ self.model = TFTModel(
61
+ input_chunk_length=self.input_chunk_length,
62
+ output_chunk_length=1,
63
+ hidden_size=self.hidden_size,
64
+ lstm_layers=self.lstm_layers,
65
+ num_attention_heads=self.n_heads,
66
+ dropout=0.1,
67
+ likelihood=QuantileRegression(quantiles=[0.10, 0.50, 0.90]),
68
+ n_epochs=self.n_epochs,
69
+ batch_size=self.batch_size,
70
+ add_relative_index=True,
71
+ random_state=42,
72
+ log_tensorboard=False,
73
+ pl_trainer_kwargs={
74
+ 'enable_progress_bar': False,
75
+ 'accelerator': accelerator,
76
+ 'enable_model_summary': False,
77
+ },
78
+ )
79
+
80
+ def fit_predict(self, y_train, X_train, X_test_row):
81
+ """
82
+ 训练 TFT 并预测下一个时间步的 Q10/Q50/Q90.
83
+
84
+ Args:
85
+ y_train: pd.Series — 目标变量 (月度收益率), DatetimeIndex
86
+ X_train: pd.DataFrame — 特征矩阵, DatetimeIndex
87
+ X_test_row: pd.DataFrame — 测试特征 (1行), DatetimeIndex
88
+
89
+ Returns:
90
+ dict: {'tft_q10_1m': float, 'tft_q50_1m': float, 'tft_q90_1m': float}
91
+ or None if training fails
92
+ """
93
+ try:
94
+ # Minimum samples check
95
+ n = len(y_train.dropna())
96
+ if n < self.input_chunk_length + 10:
97
+ return None
98
+
99
+ # Align data
100
+ valid_idx = y_train.dropna().index
101
+ common_idx = valid_idx.intersection(X_train.index)
102
+ if len(common_idx) < self.input_chunk_length + 5:
103
+ return None
104
+
105
+ y_aligned = y_train.loc[common_idx].sort_index()
106
+ X_aligned = X_train.loc[common_idx].sort_index().fillna(0)
107
+
108
+ # Normalize dates to month-start (Darts requires regular freq)
109
+ def to_month_start(idx):
110
+ return pd.DatetimeIndex([d.replace(day=1) for d in idx])
111
+
112
+ y_ms = y_aligned.copy()
113
+ y_ms.index = to_month_start(y_ms.index)
114
+ X_ms = X_aligned.copy()
115
+ X_ms.index = to_month_start(X_ms.index)
116
+
117
+ # Drop duplicate months (if any)
118
+ y_ms = y_ms[~y_ms.index.duplicated(keep='last')]
119
+ X_ms = X_ms[~X_ms.index.duplicated(keep='last')]
120
+
121
+ # Ensure aligned
122
+ common = y_ms.index.intersection(X_ms.index)
123
+ y_ms = y_ms.loc[common]
124
+ X_ms = X_ms.loc[common]
125
+
126
+ if len(y_ms) < self.input_chunk_length + 5:
127
+ return None
128
+
129
+ # Convert to Darts TimeSeries
130
+ y_ts = TimeSeries.from_times_and_values(
131
+ y_ms.index, y_ms.values.reshape(-1, 1),
132
+ freq='MS'
133
+ )
134
+ cov_values = X_ms.values.astype(np.float32)
135
+ cov_ts = TimeSeries.from_times_and_values(
136
+ X_ms.index, cov_values,
137
+ columns=list(X_ms.columns), freq='MS'
138
+ )
139
+
140
+ # Extend covariates with test point
141
+ X_test_clean = X_test_row.fillna(0).copy()
142
+ X_test_clean.index = to_month_start(X_test_clean.index)
143
+ cov_ext_df = pd.concat([X_ms, X_test_clean]).sort_index()
144
+ cov_ext_df = cov_ext_df[~cov_ext_df.index.duplicated(keep='last')]
145
+ cov_ext_ts = TimeSeries.from_times_and_values(
146
+ cov_ext_df.index, cov_ext_df.values.astype(np.float32),
147
+ columns=list(cov_ext_df.columns), freq='MS'
148
+ )
149
+
150
+ # Build & train
151
+ self._build_model()
152
+ self.model.fit(y_ts, past_covariates=cov_ts, verbose=False)
153
+
154
+ # Predict
155
+ pred = self.model.predict(
156
+ n=1,
157
+ past_covariates=cov_ext_ts,
158
+ num_samples=200,
159
+ )
160
+
161
+ # Extract quantiles from probabilistic prediction
162
+ vals = pred.all_values() # shape: (1, n_components, n_samples)
163
+ samples = vals.flatten() # all 200 samples
164
+ q10 = float(np.percentile(samples, 10))
165
+ q50 = float(np.percentile(samples, 50))
166
+ q90 = float(np.percentile(samples, 90))
167
+
168
+ # Sanity check
169
+ if any(np.isnan(v) or np.isinf(v) for v in [q10, q50, q90]):
170
+ return None
171
+
172
+ # Enforce monotonicity
173
+ vals = sorted([q10, q50, q90])
174
+ result = {
175
+ 'tft_q10_1m': float(np.clip(vals[0], -0.50, 0.50)),
176
+ 'tft_q50_1m': float(np.clip(vals[1], -0.50, 0.50)),
177
+ 'tft_q90_1m': float(np.clip(vals[2], -0.50, 0.50)),
178
+ }
179
+ self._fitted = True
180
+ return result
181
+
182
+ except Exception as e:
183
+ # Silent fallback — TFT failure should not crash pipeline
184
+ return None
185
+
186
+
187
+ def tft_predict_step(train_df, test_df, sel_features, y_col='target_ret_1m'):
188
+ """
189
+ Walk-forward 单步 TFT 预测 — 供 engine.py 调用的便捷函数.
190
+
191
+ Args:
192
+ train_df: pd.DataFrame — 训练窗口数据 (含特征+目标)
193
+ test_df: pd.DataFrame — 测试行(1行)
194
+ sel_features: list — 选定特征名
195
+ y_col: str — 目标列名
196
+
197
+ Returns:
198
+ dict or None: TFT quantile predictions
199
+ """
200
+ predictor = TFTQuantilePredictor(
201
+ input_chunk_length=min(24, len(train_df) - 5),
202
+ n_epochs=10,
203
+ batch_size=min(32, len(train_df) // 2),
204
+ use_gpu=False, # CPU faster for small batches
205
+ )
206
+
207
+ y_train = train_df[y_col]
208
+ X_train = train_df[sel_features]
209
+ X_test = test_df[sel_features]
210
+
211
+ return predictor.fit_predict(y_train, X_train, X_test)
data/api_keys.json ADDED
@@ -0,0 +1,6 @@
 
 
 
 
 
 
 
1
+ {
2
+ "fred": "fc02a6e6a359a4cc16f0f1752d258011",
3
+ "eia": "9Nv5PhLREMmmKeo0zJ2U3Zu21Bntf8DfhEKBpi55",
4
+ "mongodb": "mongodb://misun:sun20060810@ac-sfsrs0u-shard-00-00.heeszaj.mongodb.net:27017,ac-sfsrs0u-shard-00-01.heeszaj.mongodb.net:27017,ac-sfsrs0u-shard-00-02.heeszaj.mongodb.net:27017/?ssl=true&replicaSet=atlas-12yhqc-shard-0&authSource=admin&appName=oil-risk-db",
5
+ "mongodb_db": "oil_risk_intelligence"
6
+ }
data/cloud/census_oil_trade.csv ADDED
@@ -0,0 +1,1071 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ CTY_CODE,CTY_NAME,GEN_VAL_MO,COMM_LVL,I_COMMODITY,time,flow
2
+ 5200,UNITED ARAB EMIRATES,80943763,HS6,270900,2024-03,imports
3
+ 5200,UNITED ARAB EMIRATES,82229530,HS6,270900,2024-04,imports
4
+ 5200,UNITED ARAB EMIRATES,100503791,HS6,270900,2024-05,imports
5
+ 5200,UNITED ARAB EMIRATES,175807326,HS6,270900,2024-06,imports
6
+ 5200,UNITED ARAB EMIRATES,87210895,HS6,270900,2024-07,imports
7
+ 5200,UNITED ARAB EMIRATES,82377111,HS6,270900,2024-08,imports
8
+ 5200,UNITED ARAB EMIRATES,88479385,HS6,270900,2024-09,imports
9
+ 5200,UNITED ARAB EMIRATES,156286886,HS6,270900,2024-10,imports
10
+ 5200,UNITED ARAB EMIRATES,154739691,HS6,270900,2024-11,imports
11
+ 5200,UNITED ARAB EMIRATES,156560397,HS6,270900,2024-12,imports
12
+ 5200,UNITED ARAB EMIRATES,75111560,HS6,270900,2025-01,imports
13
+ 5200,UNITED ARAB EMIRATES,0,HS6,270900,2025-02,imports
14
+ 5200,UNITED ARAB EMIRATES,201066737,HS6,270900,2025-03,imports
15
+ 5200,UNITED ARAB EMIRATES,132872577,HS6,270900,2025-04,imports
16
+ 5200,UNITED ARAB EMIRATES,0,HS6,270900,2025-05,imports
17
+ 5200,UNITED ARAB EMIRATES,0,HS6,270900,2025-06,imports
18
+ 5200,UNITED ARAB EMIRATES,0,HS6,270900,2025-07,imports
19
+ 5200,UNITED ARAB EMIRATES,16871557,HS6,270900,2025-08,imports
20
+ 5200,UNITED ARAB EMIRATES,176793803,HS6,270900,2025-09,imports
21
+ 5200,UNITED ARAB EMIRATES,73840614,HS6,270900,2025-10,imports
22
+ 5200,UNITED ARAB EMIRATES,48210780,HS6,270900,2025-11,imports
23
+ 5200,UNITED ARAB EMIRATES,0,HS6,270900,2025-12,imports
24
+ 5330,INDIA,102000,HS6,270900,2025-11,imports
25
+ 5330,INDIA,0,HS6,270900,2025-12,imports
26
+ 5590,SINGAPORE,69280923,HS6,270900,2025-05,imports
27
+ 5590,SINGAPORE,0,HS6,270900,2025-06,imports
28
+ 5590,SINGAPORE,0,HS6,270900,2025-07,imports
29
+ 5590,SINGAPORE,0,HS6,270900,2025-08,imports
30
+ 5590,SINGAPORE,0,HS6,270900,2025-09,imports
31
+ 5590,SINGAPORE,0,HS6,270900,2025-10,imports
32
+ 5590,SINGAPORE,0,HS6,270900,2025-11,imports
33
+ 5590,SINGAPORE,0,HS6,270900,2025-12,imports
34
+ 5700,CHINA,25920,HS6,270900,2025-11,imports
35
+ 5700,CHINA,0,HS6,270900,2025-12,imports
36
+ 5820,HONG KONG,15884,HS6,270900,2024-10,imports
37
+ 5820,HONG KONG,0,HS6,270900,2024-11,imports
38
+ 5820,HONG KONG,0,HS6,270900,2024-12,imports
39
+ 2740,TRINIDAD AND TOBAGO,127642518,HS6,270900,2024-01,imports
40
+ 2740,TRINIDAD AND TOBAGO,86035105,HS6,270900,2024-02,imports
41
+ 2740,TRINIDAD AND TOBAGO,84551955,HS6,270900,2024-03,imports
42
+ 2740,TRINIDAD AND TOBAGO,86769205,HS6,270900,2024-04,imports
43
+ 2740,TRINIDAD AND TOBAGO,27663303,HS6,270900,2024-05,imports
44
+ 2740,TRINIDAD AND TOBAGO,182678183,HS6,270900,2024-06,imports
45
+ 2740,TRINIDAD AND TOBAGO,107139983,HS6,270900,2024-07,imports
46
+ 2740,TRINIDAD AND TOBAGO,96375972,HS6,270900,2024-08,imports
47
+ 2740,TRINIDAD AND TOBAGO,155539863,HS6,270900,2024-09,imports
48
+ 2740,TRINIDAD AND TOBAGO,95509846,HS6,270900,2024-10,imports
49
+ 2740,TRINIDAD AND TOBAGO,132714832,HS6,270900,2024-11,imports
50
+ 2740,TRINIDAD AND TOBAGO,154777259,HS6,270900,2024-12,imports
51
+ 2740,TRINIDAD AND TOBAGO,63705755,HS6,270900,2025-01,imports
52
+ 2740,TRINIDAD AND TOBAGO,70389908,HS6,270900,2025-02,imports
53
+ 2740,TRINIDAD AND TOBAGO,82887013,HS6,270900,2025-03,imports
54
+ 2740,TRINIDAD AND TOBAGO,109354158,HS6,270900,2025-04,imports
55
+ 2740,TRINIDAD AND TOBAGO,74419493,HS6,270900,2025-05,imports
56
+ 2740,TRINIDAD AND TOBAGO,96532304,HS6,270900,2025-06,imports
57
+ 2740,TRINIDAD AND TOBAGO,73459243,HS6,270900,2025-07,imports
58
+ 2740,TRINIDAD AND TOBAGO,105194284,HS6,270900,2025-08,imports
59
+ 2740,TRINIDAD AND TOBAGO,0,HS6,270900,2025-09,imports
60
+ 2740,TRINIDAD AND TOBAGO,79487543,HS6,270900,2025-10,imports
61
+ 2740,TRINIDAD AND TOBAGO,31705979,HS6,270900,2025-11,imports
62
+ 2740,TRINIDAD AND TOBAGO,84227231,HS6,270900,2025-12,imports
63
+ 2740,TRINIDAD AND TOBAGO,62550097,HS6,270900,2026-01,imports
64
+ 3010,COLOMBIA,563501159,HS6,270900,2024-01,imports
65
+ 3010,COLOMBIA,375973278,HS6,270900,2024-02,imports
66
+ 3010,COLOMBIA,435252515,HS6,270900,2024-03,imports
67
+ 3010,COLOMBIA,657068547,HS6,270900,2024-04,imports
68
+ 3010,COLOMBIA,620049955,HS6,270900,2024-05,imports
69
+ 3010,COLOMBIA,502277386,HS6,270900,2024-06,imports
70
+ 3010,COLOMBIA,413616541,HS6,270900,2024-07,imports
71
+ 3010,COLOMBIA,460573347,HS6,270900,2024-08,imports
72
+ 3010,COLOMBIA,457703408,HS6,270900,2024-09,imports
73
+ 3010,COLOMBIA,423598737,HS6,270900,2024-10,imports
74
+ 3010,COLOMBIA,531651579,HS6,270900,2024-11,imports
75
+ 3010,COLOMBIA,421869949,HS6,270900,2024-12,imports
76
+ 3010,COLOMBIA,419465398,HS6,270900,2025-01,imports
77
+ 3010,COLOMBIA,339201249,HS6,270900,2025-02,imports
78
+ 3010,COLOMBIA,348214802,HS6,270900,2025-03,imports
79
+ 3010,COLOMBIA,555919959,HS6,270900,2025-04,imports
80
+ 3010,COLOMBIA,490006416,HS6,270900,2025-05,imports
81
+ 3010,COLOMBIA,309477074,HS6,270900,2025-06,imports
82
+ 3010,COLOMBIA,500220855,HS6,270900,2025-07,imports
83
+ 3010,COLOMBIA,499631042,HS6,270900,2025-08,imports
84
+ 3010,COLOMBIA,324521785,HS6,270900,2025-09,imports
85
+ 3010,COLOMBIA,264570210,HS6,270900,2025-10,imports
86
+ 3010,COLOMBIA,272883462,HS6,270900,2025-11,imports
87
+ 3010,COLOMBIA,437023651,HS6,270900,2025-12,imports
88
+ 3010,COLOMBIA,358676394,HS6,270900,2026-01,imports
89
+ 3070,VENEZUELA,285602817,HS6,270900,2024-01,imports
90
+ 3070,VENEZUELA,323191819,HS6,270900,2024-02,imports
91
+ 3070,VENEZUELA,352217575,HS6,270900,2024-03,imports
92
+ 3070,VENEZUELA,457944522,HS6,270900,2024-04,imports
93
+ 3070,VENEZUELA,483763836,HS6,270900,2024-05,imports
94
+ 3070,VENEZUELA,478004104,HS6,270900,2024-06,imports
95
+ 3070,VENEZUELA,637792562,HS6,270900,2024-07,imports
96
+ 3070,VENEZUELA,580554436,HS6,270900,2024-08,imports
97
+ 3070,VENEZUELA,405255277,HS6,270900,2024-09,imports
98
+ 3070,VENEZUELA,597314139,HS6,270900,2024-10,imports
99
+ 3070,VENEZUELA,437849139,HS6,270900,2024-11,imports
100
+ 3070,VENEZUELA,585367566,HS6,270900,2024-12,imports
101
+ 3070,VENEZUELA,571725337,HS6,270900,2025-01,imports
102
+ 3070,VENEZUELA,417042775,HS6,270900,2025-02,imports
103
+ 3070,VENEZUELA,475164240,HS6,270900,2025-03,imports
104
+ 3070,VENEZUELA,321317356,HS6,270900,2025-04,imports
105
+ 3070,VENEZUELA,233624965,HS6,270900,2025-05,imports
106
+ 3070,VENEZUELA,192134097,HS6,270900,2025-06,imports
107
+ 3070,VENEZUELA,0,HS6,270900,2025-07,imports
108
+ 3070,VENEZUELA,65784093,HS6,270900,2025-08,imports
109
+ 3070,VENEZUELA,135024087,HS6,270900,2025-09,imports
110
+ 3070,VENEZUELA,264415832,HS6,270900,2025-10,imports
111
+ 3070,VENEZUELA,273476526,HS6,270900,2025-11,imports
112
+ 3070,VENEZUELA,268754430,HS6,270900,2025-12,imports
113
+ 3070,VENEZUELA,386353406,HS6,270900,2026-01,imports
114
+ 3120,GUYANA,432966632,HS6,270900,2024-01,imports
115
+ 3120,GUYANA,451786529,HS6,270900,2024-02,imports
116
+ 3120,GUYANA,355373636,HS6,270900,2024-03,imports
117
+ 3120,GUYANA,465224733,HS6,270900,2024-04,imports
118
+ 3120,GUYANA,518269514,HS6,270900,2024-05,imports
119
+ 3120,GUYANA,703065135,HS6,270900,2024-06,imports
120
+ 3120,GUYANA,743581382,HS6,270900,2024-07,imports
121
+ 3120,GUYANA,371958419,HS6,270900,2024-08,imports
122
+ 3120,GUYANA,332307890,HS6,270900,2024-09,imports
123
+ 3120,GUYANA,345854788,HS6,270900,2024-10,imports
124
+ 3120,GUYANA,220378717,HS6,270900,2024-11,imports
125
+ 3120,GUYANA,247345016,HS6,270900,2024-12,imports
126
+ 3120,GUYANA,333740762,HS6,270900,2025-01,imports
127
+ 3120,GUYANA,108852547,HS6,270900,2025-02,imports
128
+ 3120,GUYANA,341317270,HS6,270900,2025-03,imports
129
+ 3120,GUYANA,663173149,HS6,270900,2025-04,imports
130
+ 3120,GUYANA,451013361,HS6,270900,2025-05,imports
131
+ 3120,GUYANA,469022782,HS6,270900,2025-06,imports
132
+ 3120,GUYANA,526872611,HS6,270900,2025-07,imports
133
+ 3120,GUYANA,581789225,HS6,270900,2025-08,imports
134
+ 3120,GUYANA,237819074,HS6,270900,2025-09,imports
135
+ 3120,GUYANA,435187400,HS6,270900,2025-10,imports
136
+ 3120,GUYANA,365684481,HS6,270900,2025-11,imports
137
+ 3120,GUYANA,430257486,HS6,270900,2025-12,imports
138
+ 3120,GUYANA,456549891,HS6,270900,2026-01,imports
139
+ 3310,ECUADOR,194491756,HS6,270900,2024-01,imports
140
+ 3310,ECUADOR,303901183,HS6,270900,2024-02,imports
141
+ 3310,ECUADOR,315134872,HS6,270900,2024-03,imports
142
+ 3310,ECUADOR,238225448,HS6,270900,2024-04,imports
143
+ 3310,ECUADOR,479103395,HS6,270900,2024-05,imports
144
+ 3310,ECUADOR,369299637,HS6,270900,2024-06,imports
145
+ 3310,ECUADOR,433504419,HS6,270900,2024-07,imports
146
+ 3310,ECUADOR,274061549,HS6,270900,2024-08,imports
147
+ 3310,ECUADOR,201424875,HS6,270900,2024-09,imports
148
+ 3310,ECUADOR,280621376,HS6,270900,2024-10,imports
149
+ 3310,ECUADOR,372916755,HS6,270900,2024-11,imports
150
+ 3310,ECUADOR,40795688,HS6,270900,2024-12,imports
151
+ 3310,ECUADOR,278206809,HS6,270900,2025-01,imports
152
+ 3310,ECUADOR,179519714,HS6,270900,2025-02,imports
153
+ 3310,ECUADOR,287800383,HS6,270900,2025-03,imports
154
+ 3310,ECUADOR,264479742,HS6,270900,2025-04,imports
155
+ 3310,ECUADOR,223384803,HS6,270900,2025-05,imports
156
+ 3310,ECUADOR,234791503,HS6,270900,2025-06,imports
157
+ 3310,ECUADOR,397790792,HS6,270900,2025-07,imports
158
+ 3310,ECUADOR,155105152,HS6,270900,2025-08,imports
159
+ 3310,ECUADOR,287849520,HS6,270900,2025-09,imports
160
+ 3310,ECUADOR,109748734,HS6,270900,2025-10,imports
161
+ 3310,ECUADOR,68836859,HS6,270900,2025-11,imports
162
+ 3310,ECUADOR,168027878,HS6,270900,2025-12,imports
163
+ 3310,ECUADOR,159710051,HS6,270900,2026-01,imports
164
+ 3330,PERU,25802032,HS6,270900,2024-06,imports
165
+ 3330,PERU,0,HS6,270900,2024-07,imports
166
+ 3330,PERU,0,HS6,270900,2024-08,imports
167
+ 3330,PERU,22487619,HS6,270900,2024-09,imports
168
+ 3330,PERU,0,HS6,270900,2024-10,imports
169
+ 3330,PERU,0,HS6,270900,2024-11,imports
170
+ 3330,PERU,0,HS6,270900,2024-12,imports
171
+ 3330,PERU,23150554,HS6,270900,2025-01,imports
172
+ 3330,PERU,10119539,HS6,270900,2025-02,imports
173
+ 3330,PERU,0,HS6,270900,2025-03,imports
174
+ 3330,PERU,0,HS6,270900,2025-04,imports
175
+ 3330,PERU,0,HS6,270900,2025-05,imports
176
+ 3330,PERU,0,HS6,270900,2025-06,imports
177
+ 3330,PERU,0,HS6,270900,2025-07,imports
178
+ 3330,PERU,21646834,HS6,270900,2025-08,imports
179
+ 3330,PERU,0,HS6,270900,2025-09,imports
180
+ 3330,PERU,0,HS6,270900,2025-10,imports
181
+ 3330,PERU,0,HS6,270900,2025-11,imports
182
+ 3330,PERU,0,HS6,270900,2025-12,imports
183
+ 3510,BRAZIL,645891088,HS6,270900,2024-01,imports
184
+ 3510,BRAZIL,398664391,HS6,270900,2024-02,imports
185
+ 3510,BRAZIL,504907136,HS6,270900,2024-03,imports
186
+ 3510,BRAZIL,492857741,HS6,270900,2024-04,imports
187
+ 3510,BRAZIL,691109293,HS6,270900,2024-05,imports
188
+ 3510,BRAZIL,465089824,HS6,270900,2024-06,imports
189
+ 3510,BRAZIL,690364222,HS6,270900,2024-07,imports
190
+ 3510,BRAZIL,687333745,HS6,270900,2024-08,imports
191
+ 3510,BRAZIL,297470871,HS6,270900,2024-09,imports
192
+ 3510,BRAZIL,376397715,HS6,270900,2024-10,imports
193
+ 3510,BRAZIL,675651059,HS6,270900,2024-11,imports
194
+ 3510,BRAZIL,555354529,HS6,270900,2024-12,imports
195
+ 3510,BRAZIL,379879012,HS6,270900,2025-01,imports
196
+ 3510,BRAZIL,416268753,HS6,270900,2025-02,imports
197
+ 3510,BRAZIL,428569213,HS6,270900,2025-03,imports
198
+ 3510,BRAZIL,243843790,HS6,270900,2025-04,imports
199
+ 3510,BRAZIL,651810145,HS6,270900,2025-05,imports
200
+ 3510,BRAZIL,469587871,HS6,270900,2025-06,imports
201
+ 3510,BRAZIL,588964149,HS6,270900,2025-07,imports
202
+ 3510,BRAZIL,603725236,HS6,270900,2025-08,imports
203
+ 3510,BRAZIL,518216926,HS6,270900,2025-09,imports
204
+ 3510,BRAZIL,314690083,HS6,270900,2025-10,imports
205
+ 3510,BRAZIL,191419529,HS6,270900,2025-11,imports
206
+ 3510,BRAZIL,321213803,HS6,270900,2025-12,imports
207
+ 3510,BRAZIL,441333773,HS6,270900,2026-01,imports
208
+ 3570,ARGENTINA,111752750,HS6,270900,2024-01,imports
209
+ 3570,ARGENTINA,68576940,HS6,270900,2024-02,imports
210
+ 3570,ARGENTINA,84040456,HS6,270900,2024-03,imports
211
+ 3570,ARGENTINA,127320626,HS6,270900,2024-04,imports
212
+ 3570,ARGENTINA,231770029,HS6,270900,2024-05,imports
213
+ 3570,ARGENTINA,67019382,HS6,270900,2024-06,imports
214
+ 3570,ARGENTINA,107340083,HS6,270900,2024-07,imports
215
+ 3570,ARGENTINA,221376142,HS6,270900,2024-08,imports
216
+ 3570,ARGENTINA,0,HS6,270900,2024-09,imports
217
+ 3570,ARGENTINA,125007042,HS6,270900,2024-10,imports
218
+ 3570,ARGENTINA,112195816,HS6,270900,2024-11,imports
219
+ 3570,ARGENTINA,154845513,HS6,270900,2024-12,imports
220
+ 3570,ARGENTINA,232462531,HS6,270900,2025-01,imports
221
+ 3570,ARGENTINA,47345634,HS6,270900,2025-02,imports
222
+ 3570,ARGENTINA,87692524,HS6,270900,2025-03,imports
223
+ 3570,ARGENTINA,99467505,HS6,270900,2025-04,imports
224
+ 3570,ARGENTINA,194528102,HS6,270900,2025-05,imports
225
+ 3570,ARGENTINA,176276053,HS6,270900,2025-06,imports
226
+ 3570,ARGENTINA,298442209,HS6,270900,2025-07,imports
227
+ 3570,ARGENTINA,295328190,HS6,270900,2025-08,imports
228
+ 3570,ARGENTINA,224789261,HS6,270900,2025-09,imports
229
+ 3570,ARGENTINA,282612314,HS6,270900,2025-10,imports
230
+ 3570,ARGENTINA,308909363,HS6,270900,2025-11,imports
231
+ 3570,ARGENTINA,268343410,HS6,270900,2025-12,imports
232
+ 3570,ARGENTINA,297833464,HS6,270900,2026-01,imports
233
+ 4039,NORWAY,41754893,HS6,270900,2024-01,imports
234
+ 4039,NORWAY,12201119,HS6,270900,2024-02,imports
235
+ 4039,NORWAY,0,HS6,270900,2024-03,imports
236
+ 4039,NORWAY,67287598,HS6,270900,2024-04,imports
237
+ 4039,NORWAY,121103299,HS6,270900,2024-05,imports
238
+ 4039,NORWAY,37817821,HS6,270900,2024-06,imports
239
+ 4039,NORWAY,8508671,HS6,270900,2024-07,imports
240
+ 4039,NORWAY,1256095,HS6,270900,2024-08,imports
241
+ 4039,NORWAY,35535811,HS6,270900,2024-09,imports
242
+ 4039,NORWAY,0,HS6,270900,2024-10,imports
243
+ 4039,NORWAY,0,HS6,270900,2024-11,imports
244
+ 4039,NORWAY,42251199,HS6,270900,2024-12,imports
245
+ 4039,NORWAY,59880901,HS6,270900,2025-01,imports
246
+ 4039,NORWAY,81513572,HS6,270900,2025-02,imports
247
+ 4039,NORWAY,0,HS6,270900,2025-03,imports
248
+ 4039,NORWAY,52350052,HS6,270900,2025-04,imports
249
+ 4039,NORWAY,63021128,HS6,270900,2025-05,imports
250
+ 4039,NORWAY,0,HS6,270900,2025-06,imports
251
+ 4039,NORWAY,0,HS6,270900,2025-07,imports
252
+ 4039,NORWAY,0,HS6,270900,2025-08,imports
253
+ 4039,NORWAY,0,HS6,270900,2025-09,imports
254
+ 4039,NORWAY,0,HS6,270900,2025-10,imports
255
+ 4039,NORWAY,32049733,HS6,270900,2025-11,imports
256
+ 4039,NORWAY,0,HS6,270900,2025-12,imports
257
+ 4039,NORWAY,8914225,HS6,270900,2026-01,imports
258
+ 4120,UNITED KINGDOM,165972357,HS6,270900,2024-01,imports
259
+ 4120,UNITED KINGDOM,431164,HS6,270900,2024-02,imports
260
+ 4120,UNITED KINGDOM,85826911,HS6,270900,2024-03,imports
261
+ 4120,UNITED KINGDOM,96929137,HS6,270900,2024-04,imports
262
+ 4120,UNITED KINGDOM,136106427,HS6,270900,2024-05,imports
263
+ 4120,UNITED KINGDOM,169728031,HS6,270900,2024-06,imports
264
+ 4120,UNITED KINGDOM,103149823,HS6,270900,2024-07,imports
265
+ 4120,UNITED KINGDOM,96457600,HS6,270900,2024-08,imports
266
+ 4120,UNITED KINGDOM,216557480,HS6,270900,2024-09,imports
267
+ 4120,UNITED KINGDOM,225198821,HS6,270900,2024-10,imports
268
+ 4120,UNITED KINGDOM,128198493,HS6,270900,2024-11,imports
269
+ 4120,UNITED KINGDOM,70252299,HS6,270900,2024-12,imports
270
+ 4120,UNITED KINGDOM,106426000,HS6,270900,2025-01,imports
271
+ 4120,UNITED KINGDOM,0,HS6,270900,2025-02,imports
272
+ 4120,UNITED KINGDOM,102672265,HS6,270900,2025-03,imports
273
+ 4120,UNITED KINGDOM,193421772,HS6,270900,2025-04,imports
274
+ 4120,UNITED KINGDOM,175229148,HS6,270900,2025-05,imports
275
+ 4120,UNITED KINGDOM,64527907,HS6,270900,2025-06,imports
276
+ 4120,UNITED KINGDOM,66914842,HS6,270900,2025-07,imports
277
+ 4120,UNITED KINGDOM,82766613,HS6,270900,2025-08,imports
278
+ 4120,UNITED KINGDOM,168745865,HS6,270900,2025-09,imports
279
+ 4120,UNITED KINGDOM,121583929,HS6,270900,2025-10,imports
280
+ 4120,UNITED KINGDOM,118304068,HS6,270900,2025-11,imports
281
+ 4120,UNITED KINGDOM,132041821,HS6,270900,2025-12,imports
282
+ 4120,UNITED KINGDOM,59547868,HS6,270900,2026-01,imports
283
+ 4280,GERMANY,2086440,HS6,270900,2025-09,imports
284
+ 4280,GERMANY,0,HS6,270900,2025-10,imports
285
+ 4280,GERMANY,0,HS6,270900,2025-11,imports
286
+ 4280,GERMANY,0,HS6,270900,2025-12,imports
287
+ 7210,ALGERIA,43675678,HS6,270900,2024-01,imports
288
+ 7210,ALGERIA,42139198,HS6,270900,2024-02,imports
289
+ 7210,ALGERIA,6398972,HS6,270900,2024-03,imports
290
+ 7210,ALGERIA,4198621,HS6,270900,2024-04,imports
291
+ 7210,ALGERIA,32638199,HS6,270900,2024-05,imports
292
+ 7210,ALGERIA,65502946,HS6,270900,2024-06,imports
293
+ 7210,ALGERIA,18657941,HS6,270900,2024-07,imports
294
+ 7210,ALGERIA,8994367,HS6,270900,2024-08,imports
295
+ 7210,ALGERIA,50642186,HS6,270900,2024-09,imports
296
+ 7210,ALGERIA,509778,HS6,270900,2024-10,imports
297
+ 7210,ALGERIA,0,HS6,270900,2024-11,imports
298
+ 7210,ALGERIA,54688592,HS6,270900,2024-12,imports
299
+ 7210,ALGERIA,54717383,HS6,270900,2025-02,imports
300
+ 7210,ALGERIA,0,HS6,270900,2025-03,imports
301
+ 7210,ALGERIA,0,HS6,270900,2025-04,imports
302
+ 7210,ALGERIA,0,HS6,270900,2025-05,imports
303
+ 7210,ALGERIA,0,HS6,270900,2025-06,imports
304
+ 7210,ALGERIA,0,HS6,270900,2025-07,imports
305
+ 7210,ALGERIA,78511978,HS6,270900,2025-08,imports
306
+ 7210,ALGERIA,0,HS6,270900,2025-09,imports
307
+ 7210,ALGERIA,43279118,HS6,270900,2025-10,imports
308
+ 7210,ALGERIA,6790822,HS6,270900,2025-11,imports
309
+ 7210,ALGERIA,0,HS6,270900,2025-12,imports
310
+ 7210,ALGERIA,43384239,HS6,270900,2026-01,imports
311
+ 7230,TUNISIA,45887901,HS6,270900,2025-09,imports
312
+ 7230,TUNISIA,0,HS6,270900,2025-10,imports
313
+ 7230,TUNISIA,0,HS6,270900,2025-11,imports
314
+ 7230,TUNISIA,0,HS6,270900,2025-12,imports
315
+ 7250,LIBYA,66500671,HS6,270900,2024-01,imports
316
+ 7250,LIBYA,82312436,HS6,270900,2024-02,imports
317
+ 7250,LIBYA,169636235,HS6,270900,2024-03,imports
318
+ 7250,LIBYA,132884177,HS6,270900,2024-04,imports
319
+ 7250,LIBYA,232174183,HS6,270900,2024-05,imports
320
+ 7250,LIBYA,107635742,HS6,270900,2024-06,imports
321
+ 7250,LIBYA,157017716,HS6,270900,2024-07,imports
322
+ 7250,LIBYA,153759344,HS6,270900,2024-08,imports
323
+ 7250,LIBYA,62265242,HS6,270900,2024-09,imports
324
+ 7250,LIBYA,144079291,HS6,270900,2024-10,imports
325
+ 7250,LIBYA,84270757,HS6,270900,2024-11,imports
326
+ 7250,LIBYA,71110213,HS6,270900,2024-12,imports
327
+ 7250,LIBYA,167195517,HS6,270900,2025-01,imports
328
+ 7250,LIBYA,0,HS6,270900,2025-02,imports
329
+ 7250,LIBYA,25779039,HS6,270900,2025-03,imports
330
+ 7250,LIBYA,97295503,HS6,270900,2025-04,imports
331
+ 7250,LIBYA,114889544,HS6,270900,2025-05,imports
332
+ 7250,LIBYA,160477133,HS6,270900,2025-06,imports
333
+ 7250,LIBYA,148958313,HS6,270900,2025-07,imports
334
+ 7250,LIBYA,168345546,HS6,270900,2025-08,imports
335
+ 7250,LIBYA,113290976,HS6,270900,2025-09,imports
336
+ 7250,LIBYA,120920601,HS6,270900,2025-10,imports
337
+ 7250,LIBYA,75873173,HS6,270900,2025-11,imports
338
+ 7250,LIBYA,146601020,HS6,270900,2025-12,imports
339
+ 7250,LIBYA,73770002,HS6,270900,2026-01,imports
340
+ 7420,CAMEROON,45994000,HS6,270900,2024-01,imports
341
+ 7420,CAMEROON,19703185,HS6,270900,2024-02,imports
342
+ 7420,CAMEROON,0,HS6,270900,2024-03,imports
343
+ 7420,CAMEROON,34106037,HS6,270900,2024-04,imports
344
+ 7420,CAMEROON,32747977,HS6,270900,2024-05,imports
345
+ 7420,CAMEROON,0,HS6,270900,2024-06,imports
346
+ 7420,CAMEROON,0,HS6,270900,2024-07,imports
347
+ 7420,CAMEROON,0,HS6,270900,2024-08,imports
348
+ 7420,CAMEROON,0,HS6,270900,2024-09,imports
349
+ 7420,CAMEROON,0,HS6,270900,2024-10,imports
350
+ 7420,CAMEROON,0,HS6,270900,2024-11,imports
351
+ 7420,CAMEROON,0,HS6,270900,2024-12,imports
352
+ 7420,CAMEROON,0,HS6,270900,2025-03,imports
353
+ 7420,CAMEROON,0,HS6,270900,2025-04,imports
354
+ 7420,CAMEROON,0,HS6,270900,2025-05,imports
355
+ 7420,CAMEROON,0,HS6,270900,2025-06,imports
356
+ 7420,CAMEROON,0,HS6,270900,2025-07,imports
357
+ 7420,CAMEROON,0,HS6,270900,2025-08,imports
358
+ 7420,CAMEROON,0,HS6,270900,2025-09,imports
359
+ 7420,CAMEROON,0,HS6,270900,2025-10,imports
360
+ 7420,CAMEROON,59457108,HS6,270900,2025-11,imports
361
+ 7420,CAMEROON,9932645,HS6,270900,2025-12,imports
362
+ 7420,CAMEROON,0,HS6,270900,2026-01,imports
363
+ 7440,SENEGAL,73057939,HS6,270900,2024-12,imports
364
+ 7440,SENEGAL,66781078,HS6,270900,2025-07,imports
365
+ 7440,SENEGAL,0,HS6,270900,2025-08,imports
366
+ 7440,SENEGAL,0,HS6,270900,2025-09,imports
367
+ 7440,SENEGAL,0,HS6,270900,2025-10,imports
368
+ 7440,SENEGAL,0,HS6,270900,2025-11,imports
369
+ 7440,SENEGAL,0,HS6,270900,2025-12,imports
370
+ 7480,COTE D'IVOIRE,3449853,HS6,270900,2025-04,imports
371
+ 7480,COTE D'IVOIRE,0,HS6,270900,2025-05,imports
372
+ 7480,COTE D'IVOIRE,0,HS6,270900,2025-06,imports
373
+ 7480,COTE D'IVOIRE,0,HS6,270900,2025-07,imports
374
+ 7480,COTE D'IVOIRE,0,HS6,270900,2025-08,imports
375
+ 7480,COTE D'IVOIRE,0,HS6,270900,2025-09,imports
376
+ 7480,COTE D'IVOIRE,0,HS6,270900,2025-10,imports
377
+ 7480,COTE D'IVOIRE,0,HS6,270900,2025-11,imports
378
+ 7480,COTE D'IVOIRE,18841384,HS6,270900,2025-12,imports
379
+ 7480,COTE D'IVOIRE,12922608,HS6,270900,2026-01,imports
380
+ 7490,GHANA,76845072,HS6,270900,2024-01,imports
381
+ 7490,GHANA,132100185,HS6,270900,2024-02,imports
382
+ 7490,GHANA,176726471,HS6,270900,2024-03,imports
383
+ 7490,GHANA,0,HS6,270900,2024-04,imports
384
+ 7490,GHANA,79775060,HS6,270900,2024-05,imports
385
+ 7490,GHANA,2402271,HS6,270900,2024-06,imports
386
+ 7490,GHANA,75216182,HS6,270900,2024-07,imports
387
+ 7490,GHANA,78238758,HS6,270900,2024-08,imports
388
+ 7490,GHANA,4712859,HS6,270900,2024-09,imports
389
+ 7490,GHANA,32790200,HS6,270900,2024-10,imports
390
+ 7490,GHANA,59133638,HS6,270900,2024-11,imports
391
+ 7490,GHANA,34861735,HS6,270900,2024-12,imports
392
+ 7490,GHANA,58116968,HS6,270900,2025-01,imports
393
+ 7490,GHANA,13193135,HS6,270900,2025-02,imports
394
+ 7490,GHANA,0,HS6,270900,2025-03,imports
395
+ 7490,GHANA,43537856,HS6,270900,2025-04,imports
396
+ 7490,GHANA,25388893,HS6,270900,2025-05,imports
397
+ 7490,GHANA,60367209,HS6,270900,2025-06,imports
398
+ 7490,GHANA,20566634,HS6,270900,2025-07,imports
399
+ 7490,GHANA,40762204,HS6,270900,2025-08,imports
400
+ 7490,GHANA,8011323,HS6,270900,2025-09,imports
401
+ 7490,GHANA,0,HS6,270900,2025-10,imports
402
+ 7490,GHANA,0,HS6,270900,2025-11,imports
403
+ 7490,GHANA,0,HS6,270900,2025-12,imports
404
+ 7490,GHANA,52108237,HS6,270900,2026-01,imports
405
+ 7530,NIGERIA,461714461,HS6,270900,2024-01,imports
406
+ 7530,NIGERIA,318983297,HS6,270900,2024-02,imports
407
+ 7530,NIGERIA,389163456,HS6,270900,2024-03,imports
408
+ 7530,NIGERIA,464022032,HS6,270900,2024-04,imports
409
+ 7530,NIGERIA,253817278,HS6,270900,2024-05,imports
410
+ 7530,NIGERIA,375448570,HS6,270900,2024-06,imports
411
+ 7530,NIGERIA,550810755,HS6,270900,2024-07,imports
412
+ 7530,NIGERIA,265566554,HS6,270900,2024-08,imports
413
+ 7530,NIGERIA,389755090,HS6,270900,2024-09,imports
414
+ 7530,NIGERIA,361478232,HS6,270900,2024-10,imports
415
+ 7530,NIGERIA,205537384,HS6,270900,2024-11,imports
416
+ 7530,NIGERIA,372086080,HS6,270900,2024-12,imports
417
+ 7530,NIGERIA,271382571,HS6,270900,2025-01,imports
418
+ 7530,NIGERIA,189839700,HS6,270900,2025-02,imports
419
+ 7530,NIGERIA,275272852,HS6,270900,2025-03,imports
420
+ 7530,NIGERIA,368621423,HS6,270900,2025-04,imports
421
+ 7530,NIGERIA,311221842,HS6,270900,2025-05,imports
422
+ 7530,NIGERIA,484421665,HS6,270900,2025-06,imports
423
+ 7530,NIGERIA,328386310,HS6,270900,2025-07,imports
424
+ 7530,NIGERIA,382127245,HS6,270900,2025-08,imports
425
+ 7530,NIGERIA,365261887,HS6,270900,2025-09,imports
426
+ 7530,NIGERIA,226576614,HS6,270900,2025-10,imports
427
+ 7530,NIGERIA,182156956,HS6,270900,2025-11,imports
428
+ 7530,NIGERIA,255802797,HS6,270900,2025-12,imports
429
+ 7530,NIGERIA,115990284,HS6,270900,2026-01,imports
430
+ 7550,GABON,11770199,HS6,270900,2024-05,imports
431
+ 7550,GABON,0,HS6,270900,2024-06,imports
432
+ 7550,GABON,0,HS6,270900,2024-07,imports
433
+ 7550,GABON,0,HS6,270900,2024-08,imports
434
+ 7550,GABON,0,HS6,270900,2024-09,imports
435
+ 7550,GABON,49032286,HS6,270900,2024-10,imports
436
+ 7550,GABON,0,HS6,270900,2024-11,imports
437
+ 7550,GABON,0,HS6,270900,2024-12,imports
438
+ 7550,GABON,36326513,HS6,270900,2025-05,imports
439
+ 7550,GABON,13254233,HS6,270900,2025-06,imports
440
+ 7550,GABON,47188362,HS6,270900,2025-07,imports
441
+ 7550,GABON,32726683,HS6,270900,2025-08,imports
442
+ 7550,GABON,91500170,HS6,270900,2025-09,imports
443
+ 7550,GABON,72572136,HS6,270900,2025-10,imports
444
+ 7550,GABON,73800980,HS6,270900,2025-11,imports
445
+ 7550,GABON,61180006,HS6,270900,2025-12,imports
446
+ 7550,GABON,36960539,HS6,270900,2026-01,imports
447
+ 7560,CHAD,45578034,HS6,270900,2024-01,imports
448
+ 7560,CHAD,0,HS6,270900,2024-02,imports
449
+ 7560,CHAD,14292971,HS6,270900,2024-03,imports
450
+ 7560,CHAD,0,HS6,270900,2024-04,imports
451
+ 7560,CHAD,0,HS6,270900,2024-05,imports
452
+ 7560,CHAD,16566987,HS6,270900,2024-06,imports
453
+ 7560,CHAD,0,HS6,270900,2024-07,imports
454
+ 7560,CHAD,0,HS6,270900,2024-08,imports
455
+ 7560,CHAD,0,HS6,270900,2024-09,imports
456
+ 7560,CHAD,0,HS6,270900,2024-10,imports
457
+ 7560,CHAD,0,HS6,270900,2024-11,imports
458
+ 7560,CHAD,0,HS6,270900,2024-12,imports
459
+ 7620,ANGOLA,33499739,HS6,270900,2024-01,imports
460
+ 7620,ANGOLA,28867715,HS6,270900,2024-02,imports
461
+ 7620,ANGOLA,121542264,HS6,270900,2024-03,imports
462
+ 7620,ANGOLA,186989380,HS6,270900,2024-04,imports
463
+ 7620,ANGOLA,99817007,HS6,270900,2024-05,imports
464
+ 7620,ANGOLA,49137653,HS6,270900,2024-06,imports
465
+ 7620,ANGOLA,126366784,HS6,270900,2024-07,imports
466
+ 7620,ANGOLA,305750592,HS6,270900,2024-08,imports
467
+ 7620,ANGOLA,215776396,HS6,270900,2024-09,imports
468
+ 7620,ANGOLA,152729462,HS6,270900,2024-10,imports
469
+ 7620,ANGOLA,196559711,HS6,270900,2024-11,imports
470
+ 7620,ANGOLA,142659323,HS6,270900,2024-12,imports
471
+ 7620,ANGOLA,74247357,HS6,270900,2025-01,imports
472
+ 7620,ANGOLA,43246128,HS6,270900,2025-02,imports
473
+ 7620,ANGOLA,22679764,HS6,270900,2025-03,imports
474
+ 7620,ANGOLA,13673327,HS6,270900,2025-04,imports
475
+ 7620,ANGOLA,57398919,HS6,270900,2025-05,imports
476
+ 7620,ANGOLA,93996513,HS6,270900,2025-06,imports
477
+ 7620,ANGOLA,158526084,HS6,270900,2025-07,imports
478
+ 7620,ANGOLA,124102010,HS6,270900,2025-08,imports
479
+ 7620,ANGOLA,58690449,HS6,270900,2025-09,imports
480
+ 7620,ANGOLA,40795184,HS6,270900,2025-10,imports
481
+ 7620,ANGOLA,37845800,HS6,270900,2025-11,imports
482
+ 7620,ANGOLA,38828769,HS6,270900,2025-12,imports
483
+ 7620,ANGOLA,154841007,HS6,270900,2026-01,imports
484
+ 7660,DEMOCRATIC REPUBLIC OF THE CONGO,60634572,HS6,270900,2025-08,imports
485
+ 7660,DEMOCRATIC REPUBLIC OF THE CONGO,1888865,HS6,270900,2025-09,imports
486
+ 7660,DEMOCRATIC REPUBLIC OF THE CONGO,4766446,HS6,270900,2025-10,imports
487
+ 7660,DEMOCRATIC REPUBLIC OF THE CONGO,31710190,HS6,270900,2025-11,imports
488
+ 7660,DEMOCRATIC REPUBLIC OF THE CONGO,688613,HS6,270900,2025-12,imports
489
+ 4550,POLAND,10773,HS6,270900,2024-08,imports
490
+ 4550,POLAND,0,HS6,270900,2024-09,imports
491
+ 4550,POLAND,10706,HS6,270900,2024-10,imports
492
+ 4550,POLAND,0,HS6,270900,2024-11,imports
493
+ 4550,POLAND,13188,HS6,270900,2024-12,imports
494
+ 4634,KAZAKHSTAN,123400170,HS6,270900,2024-01,imports
495
+ 4634,KAZAKHSTAN,62353164,HS6,270900,2024-02,imports
496
+ 4634,KAZAKHSTAN,104484883,HS6,270900,2024-03,imports
497
+ 4634,KAZAKHSTAN,138364598,HS6,270900,2024-04,imports
498
+ 4634,KAZAKHSTAN,81008160,HS6,270900,2024-05,imports
499
+ 4634,KAZAKHSTAN,151435401,HS6,270900,2024-06,imports
500
+ 4634,KAZAKHSTAN,108390626,HS6,270900,2024-07,imports
501
+ 4634,KAZAKHSTAN,87816084,HS6,270900,2024-08,imports
502
+ 4634,KAZAKHSTAN,114349726,HS6,270900,2024-09,imports
503
+ 4634,KAZAKHSTAN,59081895,HS6,270900,2024-10,imports
504
+ 4634,KAZAKHSTAN,82321300,HS6,270900,2024-11,imports
505
+ 4634,KAZAKHSTAN,34589525,HS6,270900,2024-12,imports
506
+ 4634,KAZAKHSTAN,57802366,HS6,270900,2025-01,imports
507
+ 4634,KAZAKHSTAN,22531788,HS6,270900,2025-02,imports
508
+ 4634,KAZAKHSTAN,69753103,HS6,270900,2025-03,imports
509
+ 4634,KAZAKHSTAN,71981886,HS6,270900,2025-04,imports
510
+ 4634,KAZAKHSTAN,153399569,HS6,270900,2025-05,imports
511
+ 4634,KAZAKHSTAN,82280065,HS6,270900,2025-06,imports
512
+ 4634,KAZAKHSTAN,0,HS6,270900,2025-07,imports
513
+ 4634,KAZAKHSTAN,50374563,HS6,270900,2025-08,imports
514
+ 4634,KAZAKHSTAN,178856669,HS6,270900,2025-09,imports
515
+ 4634,KAZAKHSTAN,64478511,HS6,270900,2025-10,imports
516
+ 4634,KAZAKHSTAN,0,HS6,270900,2025-11,imports
517
+ 4634,KAZAKHSTAN,0,HS6,270900,2025-12,imports
518
+ 5050,IRAQ,370262411,HS6,270900,2024-01,imports
519
+ 5050,IRAQ,335898241,HS6,270900,2024-02,imports
520
+ 5050,IRAQ,319153117,HS6,270900,2024-03,imports
521
+ 5050,IRAQ,578861322,HS6,270900,2024-04,imports
522
+ 5050,IRAQ,536350296,HS6,270900,2024-05,imports
523
+ 5050,IRAQ,511329402,HS6,270900,2024-06,imports
524
+ 5050,IRAQ,491975449,HS6,270900,2024-07,imports
525
+ 5050,IRAQ,489462227,HS6,270900,2024-08,imports
526
+ 5050,IRAQ,577003646,HS6,270900,2024-09,imports
527
+ 5050,IRAQ,410907744,HS6,270900,2024-10,imports
528
+ 5050,IRAQ,560843945,HS6,270900,2024-11,imports
529
+ 5050,IRAQ,468804523,HS6,270900,2024-12,imports
530
+ 5050,IRAQ,441915646,HS6,270900,2025-01,imports
531
+ 5050,IRAQ,343091023,HS6,270900,2025-02,imports
532
+ 5050,IRAQ,427128708,HS6,270900,2025-03,imports
533
+ 5050,IRAQ,396500508,HS6,270900,2025-04,imports
534
+ 5050,IRAQ,391743100,HS6,270900,2025-05,imports
535
+ 5050,IRAQ,456585833,HS6,270900,2025-06,imports
536
+ 5050,IRAQ,500954861,HS6,270900,2025-07,imports
537
+ 5050,IRAQ,429845665,HS6,270900,2025-08,imports
538
+ 5050,IRAQ,215490771,HS6,270900,2025-09,imports
539
+ 5050,IRAQ,277927440,HS6,270900,2025-10,imports
540
+ 5050,IRAQ,411580714,HS6,270900,2025-11,imports
541
+ 5050,IRAQ,354308241,HS6,270900,2025-12,imports
542
+ 5050,IRAQ,382880508,HS6,270900,2026-01,imports
543
+ 5130,KUWAIT,58908554,HS6,270900,2024-01,imports
544
+ 5130,KUWAIT,0,HS6,270900,2024-02,imports
545
+ 5130,KUWAIT,67646532,HS6,270900,2024-03,imports
546
+ 5130,KUWAIT,25307051,HS6,270900,2024-04,imports
547
+ 5130,KUWAIT,39139031,HS6,270900,2024-05,imports
548
+ 5130,KUWAIT,58333895,HS6,270900,2024-06,imports
549
+ 5130,KUWAIT,63306097,HS6,270900,2024-07,imports
550
+ 5130,KUWAIT,104214645,HS6,270900,2024-08,imports
551
+ 5130,KUWAIT,64346637,HS6,270900,2024-09,imports
552
+ 5130,KUWAIT,43408464,HS6,270900,2024-10,imports
553
+ 5130,KUWAIT,31279537,HS6,270900,2024-11,imports
554
+ 5130,KUWAIT,45001695,HS6,270900,2024-12,imports
555
+ 5130,KUWAIT,72950345,HS6,270900,2025-01,imports
556
+ 5130,KUWAIT,0,HS6,270900,2025-02,imports
557
+ 5130,KUWAIT,0,HS6,270900,2025-03,imports
558
+ 5130,KUWAIT,4328894,HS6,270900,2025-04,imports
559
+ 5130,KUWAIT,41123456,HS6,270900,2025-05,imports
560
+ 5130,KUWAIT,37569801,HS6,270900,2025-06,imports
561
+ 5130,KUWAIT,40013874,HS6,270900,2025-07,imports
562
+ 5130,KUWAIT,47808483,HS6,270900,2025-08,imports
563
+ 5130,KUWAIT,47320866,HS6,270900,2025-09,imports
564
+ 5130,KUWAIT,47544082,HS6,270900,2025-10,imports
565
+ 5130,KUWAIT,0,HS6,270900,2025-11,imports
566
+ 5130,KUWAIT,34254918,HS6,270900,2025-12,imports
567
+ 5130,KUWAIT,34670047,HS6,270900,2026-01,imports
568
+ 5170,SAUDI ARABIA,743505569,HS6,270900,2024-01,imports
569
+ 5170,SAUDI ARABIA,549651133,HS6,270900,2024-02,imports
570
+ 5170,SAUDI ARABIA,887155490,HS6,270900,2024-03,imports
571
+ 5170,SAUDI ARABIA,975315992,HS6,270900,2024-04,imports
572
+ 5170,SAUDI ARABIA,1014406945,HS6,270900,2024-05,imports
573
+ 5170,SAUDI ARABIA,616145454,HS6,270900,2024-06,imports
574
+ 5170,SAUDI ARABIA,758946750,HS6,270900,2024-07,imports
575
+ 5170,SAUDI ARABIA,629813344,HS6,270900,2024-08,imports
576
+ 5170,SAUDI ARABIA,691607345,HS6,270900,2024-09,imports
577
+ 5170,SAUDI ARABIA,379434564,HS6,270900,2024-10,imports
578
+ 5170,SAUDI ARABIA,535710827,HS6,270900,2024-11,imports
579
+ 5170,SAUDI ARABIA,415215931,HS6,270900,2024-12,imports
580
+ 5170,SAUDI ARABIA,756033505,HS6,270900,2025-01,imports
581
+ 5170,SAUDI ARABIA,631393619,HS6,270900,2025-02,imports
582
+ 5170,SAUDI ARABIA,455699455,HS6,270900,2025-03,imports
583
+ 5170,SAUDI ARABIA,368874209,HS6,270900,2025-04,imports
584
+ 5170,SAUDI ARABIA,613281415,HS6,270900,2025-05,imports
585
+ 5170,SAUDI ARABIA,617531259,HS6,270900,2025-06,imports
586
+ 5170,SAUDI ARABIA,636128630,HS6,270900,2025-07,imports
587
+ 5170,SAUDI ARABIA,603454416,HS6,270900,2025-08,imports
588
+ 5170,SAUDI ARABIA,497264781,HS6,270900,2025-09,imports
589
+ 5170,SAUDI ARABIA,640252020,HS6,270900,2025-10,imports
590
+ 5170,SAUDI ARABIA,483708561,HS6,270900,2025-11,imports
591
+ 5170,SAUDI ARABIA,558099091,HS6,270900,2025-12,imports
592
+ 5170,SAUDI ARABIA,687002553,HS6,270900,2026-01,imports
593
+ 5180,QATAR,3000,HS6,270900,2024-07,imports
594
+ 5180,QATAR,0,HS6,270900,2024-08,imports
595
+ 5180,QATAR,0,HS6,270900,2024-09,imports
596
+ 5180,QATAR,0,HS6,270900,2024-10,imports
597
+ 5180,QATAR,0,HS6,270900,2024-11,imports
598
+ 5180,QATAR,0,HS6,270900,2024-12,imports
599
+ -,TOTAL FOR ALL COUNTRIES,13779056448,HS6,270900,2024-01,imports
600
+ -,TOTAL FOR ALL COUNTRIES,12028864282,HS6,270900,2024-02,imports
601
+ -,TOTAL FOR ALL COUNTRIES,12949986031,HS6,270900,2024-03,imports
602
+ -,TOTAL FOR ALL COUNTRIES,14733970166,HS6,270900,2024-04,imports
603
+ -,TOTAL FOR ALL COUNTRIES,16045045672,HS6,270900,2024-05,imports
604
+ -,TOTAL FOR ALL COUNTRIES,14581161880,HS6,270900,2024-06,imports
605
+ -,TOTAL FOR ALL COUNTRIES,16503872718,HS6,270900,2024-07,imports
606
+ -,TOTAL FOR ALL COUNTRIES,14232186164,HS6,270900,2024-08,imports
607
+ -,TOTAL FOR ALL COUNTRIES,13674324666,HS6,270900,2024-09,imports
608
+ -,TOTAL FOR ALL COUNTRIES,13187148484,HS6,270900,2024-10,imports
609
+ -,TOTAL FOR ALL COUNTRIES,12715272834,HS6,270900,2024-11,imports
610
+ -,TOTAL FOR ALL COUNTRIES,13273687777,HS6,270900,2024-12,imports
611
+ -,TOTAL FOR ALL COUNTRIES,13744230901,HS6,270900,2025-01,imports
612
+ -,TOTAL FOR ALL COUNTRIES,11486729654,HS6,270900,2025-02,imports
613
+ -,TOTAL FOR ALL COUNTRIES,11744042172,HS6,270900,2025-03,imports
614
+ -,TOTAL FOR ALL COUNTRIES,11908840569,HS6,270900,2025-04,imports
615
+ -,TOTAL FOR ALL COUNTRIES,11999679879,HS6,270900,2025-05,imports
616
+ -,TOTAL FOR ALL COUNTRIES,11264757476,HS6,270900,2025-06,imports
617
+ -,TOTAL FOR ALL COUNTRIES,12524723305,HS6,270900,2025-07,imports
618
+ -,TOTAL FOR ALL COUNTRIES,12255397179,HS6,270900,2025-08,imports
619
+ -,TOTAL FOR ALL COUNTRIES,11273871359,HS6,270900,2025-09,imports
620
+ -,TOTAL FOR ALL COUNTRIES,10955585969,HS6,270900,2025-10,imports
621
+ -,TOTAL FOR ALL COUNTRIES,9661385978,HS6,270900,2025-11,imports
622
+ -,TOTAL FOR ALL COUNTRIES,11445424033,HS6,270900,2025-12,imports
623
+ -,TOTAL FOR ALL COUNTRIES,10580065347,HS6,270900,2026-01,imports
624
+ 0003,EUROPEAN UNION,10773,HS6,270900,2024-08,imports
625
+ 0003,EUROPEAN UNION,0,HS6,270900,2024-09,imports
626
+ 0003,EUROPEAN UNION,10706,HS6,270900,2024-10,imports
627
+ 0003,EUROPEAN UNION,0,HS6,270900,2024-11,imports
628
+ 0003,EUROPEAN UNION,13188,HS6,270900,2024-12,imports
629
+ 0003,EUROPEAN UNION,2086440,HS6,270900,2025-09,imports
630
+ 0003,EUROPEAN UNION,0,HS6,270900,2025-10,imports
631
+ 0003,EUROPEAN UNION,0,HS6,270900,2025-11,imports
632
+ 0003,EUROPEAN UNION,0,HS6,270900,2025-12,imports
633
+ 1XXX,NORTH AMERICA,9139596119,HS6,270900,2024-01,imports
634
+ 1XXX,NORTH AMERICA,8409216243,HS6,270900,2024-02,imports
635
+ 1XXX,NORTH AMERICA,8395536821,HS6,270900,2024-03,imports
636
+ 1XXX,NORTH AMERICA,9422063869,HS6,270900,2024-04,imports
637
+ 1XXX,NORTH AMERICA,10205111943,HS6,270900,2024-05,imports
638
+ 1XXX,NORTH AMERICA,9450634698,HS6,270900,2024-06,imports
639
+ 1XXX,NORTH AMERICA,10820972837,HS6,270900,2024-07,imports
640
+ 1XXX,NORTH AMERICA,9221087358,HS6,270900,2024-08,imports
641
+ 1XXX,NORTH AMERICA,9291103060,HS6,270900,2024-09,imports
642
+ 1XXX,NORTH AMERICA,8927880628,HS6,270900,2024-10,imports
643
+ 1XXX,NORTH AMERICA,8193319654,HS6,270900,2024-11,imports
644
+ 1XXX,NORTH AMERICA,9116802085,HS6,270900,2024-12,imports
645
+ 1XXX,NORTH AMERICA,9300832007,HS6,270900,2025-01,imports
646
+ 1XXX,NORTH AMERICA,8518463187,HS6,270900,2025-02,imports
647
+ 1XXX,NORTH AMERICA,8112344804,HS6,270900,2025-03,imports
648
+ 1XXX,NORTH AMERICA,7879320171,HS6,270900,2025-04,imports
649
+ 1XXX,NORTH AMERICA,7628588144,HS6,270900,2025-05,imports
650
+ 1XXX,NORTH AMERICA,7231432005,HS6,270900,2025-06,imports
651
+ 1XXX,NORTH AMERICA,8124554458,HS6,270900,2025-07,imports
652
+ 1XXX,NORTH AMERICA,7808861588,HS6,270900,2025-08,imports
653
+ 1XXX,NORTH AMERICA,7574559940,HS6,270900,2025-09,imports
654
+ 1XXX,NORTH AMERICA,7470337158,HS6,270900,2025-10,imports
655
+ 1XXX,NORTH AMERICA,6586852974,HS6,270900,2025-11,imports
656
+ 1XXX,NORTH AMERICA,7856996839,HS6,270900,2025-12,imports
657
+ 1XXX,NORTH AMERICA,6754066154,HS6,270900,2026-01,imports
658
+ 4XXX,EUROPE,331127420,HS6,270900,2024-01,imports
659
+ 4XXX,EUROPE,74985447,HS6,270900,2024-02,imports
660
+ 4XXX,EUROPE,190311794,HS6,270900,2024-03,imports
661
+ 4XXX,EUROPE,302581333,HS6,270900,2024-04,imports
662
+ 4XXX,EUROPE,338217886,HS6,270900,2024-05,imports
663
+ 4XXX,EUROPE,358981253,HS6,270900,2024-06,imports
664
+ 4XXX,EUROPE,220049120,HS6,270900,2024-07,imports
665
+ 4XXX,EUROPE,185540552,HS6,270900,2024-08,imports
666
+ 4XXX,EUROPE,366443017,HS6,270900,2024-09,imports
667
+ 4XXX,EUROPE,284291422,HS6,270900,2024-10,imports
668
+ 4XXX,EUROPE,210519793,HS6,270900,2024-11,imports
669
+ 4XXX,EUROPE,147106211,HS6,270900,2024-12,imports
670
+ 4XXX,EUROPE,224109267,HS6,270900,2025-01,imports
671
+ 4XXX,EUROPE,104045360,HS6,270900,2025-02,imports
672
+ 4XXX,EUROPE,172425368,HS6,270900,2025-03,imports
673
+ 4XXX,EUROPE,317753710,HS6,270900,2025-04,imports
674
+ 4XXX,EUROPE,391649845,HS6,270900,2025-05,imports
675
+ 4XXX,EUROPE,146807972,HS6,270900,2025-06,imports
676
+ 4XXX,EUROPE,66914842,HS6,270900,2025-07,imports
677
+ 4XXX,EUROPE,133141176,HS6,270900,2025-08,imports
678
+ 4XXX,EUROPE,349688974,HS6,270900,2025-09,imports
679
+ 4XXX,EUROPE,186062440,HS6,270900,2025-10,imports
680
+ 4XXX,EUROPE,150353801,HS6,270900,2025-11,imports
681
+ 4XXX,EUROPE,132041821,HS6,270900,2025-12,imports
682
+ 4XXX,EUROPE,68462093,HS6,270900,2026-01,imports
683
+ 7XXX,AFRICA,773807655,HS6,270900,2024-01,imports
684
+ 7XXX,AFRICA,624106016,HS6,270900,2024-02,imports
685
+ 7XXX,AFRICA,877760369,HS6,270900,2024-03,imports
686
+ 7XXX,AFRICA,822200247,HS6,270900,2024-04,imports
687
+ 7XXX,AFRICA,742739903,HS6,270900,2024-05,imports
688
+ 7XXX,AFRICA,616694169,HS6,270900,2024-06,imports
689
+ 7XXX,AFRICA,928069378,HS6,270900,2024-07,imports
690
+ 7XXX,AFRICA,812309615,HS6,270900,2024-08,imports
691
+ 7XXX,AFRICA,723151773,HS6,270900,2024-09,imports
692
+ 7XXX,AFRICA,740619249,HS6,270900,2024-10,imports
693
+ 7XXX,AFRICA,545501490,HS6,270900,2024-11,imports
694
+ 7XXX,AFRICA,748463882,HS6,270900,2024-12,imports
695
+ 7XXX,AFRICA,570942413,HS6,270900,2025-01,imports
696
+ 7XXX,AFRICA,300996346,HS6,270900,2025-02,imports
697
+ 7XXX,AFRICA,323731655,HS6,270900,2025-03,imports
698
+ 7XXX,AFRICA,526577962,HS6,270900,2025-04,imports
699
+ 7XXX,AFRICA,545225711,HS6,270900,2025-05,imports
700
+ 7XXX,AFRICA,812516753,HS6,270900,2025-06,imports
701
+ 7XXX,AFRICA,770406781,HS6,270900,2025-07,imports
702
+ 7XXX,AFRICA,887210238,HS6,270900,2025-08,imports
703
+ 7XXX,AFRICA,684531571,HS6,270900,2025-09,imports
704
+ 7XXX,AFRICA,508910099,HS6,270900,2025-10,imports
705
+ 7XXX,AFRICA,467635029,HS6,270900,2025-11,imports
706
+ 7XXX,AFRICA,531875234,HS6,270900,2025-12,imports
707
+ 7XXX,AFRICA,489976916,HS6,270900,2026-01,imports
708
+ 0014,PACIFIC RIM COUNTRIES,15884,HS6,270900,2024-10,imports
709
+ 0014,PACIFIC RIM COUNTRIES,0,HS6,270900,2024-11,imports
710
+ 0014,PACIFIC RIM COUNTRIES,0,HS6,270900,2024-12,imports
711
+ 0014,PACIFIC RIM COUNTRIES,69280923,HS6,270900,2025-05,imports
712
+ 0014,PACIFIC RIM COUNTRIES,0,HS6,270900,2025-06,imports
713
+ 0014,PACIFIC RIM COUNTRIES,0,HS6,270900,2025-07,imports
714
+ 0014,PACIFIC RIM COUNTRIES,0,HS6,270900,2025-08,imports
715
+ 0014,PACIFIC RIM COUNTRIES,0,HS6,270900,2025-09,imports
716
+ 0014,PACIFIC RIM COUNTRIES,0,HS6,270900,2025-10,imports
717
+ 0014,PACIFIC RIM COUNTRIES,25920,HS6,270900,2025-11,imports
718
+ 0014,PACIFIC RIM COUNTRIES,0,HS6,270900,2025-12,imports
719
+ 5XXX,ASIA,1172676534,HS6,270900,2024-01,imports
720
+ 5XXX,ASIA,885549374,HS6,270900,2024-02,imports
721
+ 5XXX,ASIA,1354898902,HS6,270900,2024-03,imports
722
+ 5XXX,ASIA,1661713895,HS6,270900,2024-04,imports
723
+ 5XXX,ASIA,1690400063,HS6,270900,2024-05,imports
724
+ 5XXX,ASIA,1361616077,HS6,270900,2024-06,imports
725
+ 5XXX,ASIA,1401442191,HS6,270900,2024-07,imports
726
+ 5XXX,ASIA,1305867327,HS6,270900,2024-08,imports
727
+ 5XXX,ASIA,1421437013,HS6,270900,2024-09,imports
728
+ 5XXX,ASIA,990053542,HS6,270900,2024-10,imports
729
+ 5XXX,ASIA,1282574000,HS6,270900,2024-11,imports
730
+ 5XXX,ASIA,1085582546,HS6,270900,2024-12,imports
731
+ 5XXX,ASIA,1346011056,HS6,270900,2025-01,imports
732
+ 5XXX,ASIA,974484642,HS6,270900,2025-02,imports
733
+ 5XXX,ASIA,1083894900,HS6,270900,2025-03,imports
734
+ 5XXX,ASIA,902576188,HS6,270900,2025-04,imports
735
+ 5XXX,ASIA,1115428894,HS6,270900,2025-05,imports
736
+ 5XXX,ASIA,1111686893,HS6,270900,2025-06,imports
737
+ 5XXX,ASIA,1177097365,HS6,270900,2025-07,imports
738
+ 5XXX,ASIA,1097980121,HS6,270900,2025-08,imports
739
+ 5XXX,ASIA,936870221,HS6,270900,2025-09,imports
740
+ 5XXX,ASIA,1039564156,HS6,270900,2025-10,imports
741
+ 5XXX,ASIA,943627975,HS6,270900,2025-11,imports
742
+ 5XXX,ASIA,946662250,HS6,270900,2025-12,imports
743
+ 5XXX,ASIA,1104553108,HS6,270900,2026-01,imports
744
+ 0017,CAFTA-DR,26877957,HS6,270900,2024-02,imports
745
+ 0017,CAFTA-DR,0,HS6,270900,2024-03,imports
746
+ 0017,CAFTA-DR,0,HS6,270900,2024-04,imports
747
+ 0017,CAFTA-DR,16846552,HS6,270900,2024-05,imports
748
+ 0017,CAFTA-DR,0,HS6,270900,2024-06,imports
749
+ 0017,CAFTA-DR,0,HS6,270900,2024-07,imports
750
+ 0017,CAFTA-DR,15147702,HS6,270900,2024-08,imports
751
+ 0017,CAFTA-DR,0,HS6,270900,2024-09,imports
752
+ 0017,CAFTA-DR,0,HS6,270900,2024-10,imports
753
+ 0017,CAFTA-DR,0,HS6,270900,2024-11,imports
754
+ 0017,CAFTA-DR,15377533,HS6,270900,2024-12,imports
755
+ 0017,CAFTA-DR,0,HS6,270900,2025-02,imports
756
+ 0017,CAFTA-DR,0,HS6,270900,2025-03,imports
757
+ 0017,CAFTA-DR,25056879,HS6,270900,2025-04,imports
758
+ 0017,CAFTA-DR,0,HS6,270900,2025-05,imports
759
+ 0017,CAFTA-DR,14492169,HS6,270900,2025-06,imports
760
+ 0017,CAFTA-DR,0,HS6,270900,2025-07,imports
761
+ 0017,CAFTA-DR,0,HS6,270900,2025-08,imports
762
+ 0017,CAFTA-DR,0,HS6,270900,2025-09,imports
763
+ 0017,CAFTA-DR,0,HS6,270900,2025-10,imports
764
+ 0017,CAFTA-DR,0,HS6,270900,2025-11,imports
765
+ 0017,CAFTA-DR,0,HS6,270900,2025-12,imports
766
+ 0020,USMCA (NAFTA),9139596119,HS6,270900,2024-01,imports
767
+ 0020,USMCA (NAFTA),8409216243,HS6,270900,2024-02,imports
768
+ 0020,USMCA (NAFTA),8395536821,HS6,270900,2024-03,imports
769
+ 0020,USMCA (NAFTA),9422063869,HS6,270900,2024-04,imports
770
+ 0020,USMCA (NAFTA),10205111943,HS6,270900,2024-05,imports
771
+ 0020,USMCA (NAFTA),9450634698,HS6,270900,2024-06,imports
772
+ 0020,USMCA (NAFTA),10820972837,HS6,270900,2024-07,imports
773
+ 0020,USMCA (NAFTA),9221087358,HS6,270900,2024-08,imports
774
+ 0020,USMCA (NAFTA),9291103060,HS6,270900,2024-09,imports
775
+ 0020,USMCA (NAFTA),8927880628,HS6,270900,2024-10,imports
776
+ 0020,USMCA (NAFTA),8193319654,HS6,270900,2024-11,imports
777
+ 0020,USMCA (NAFTA),9116802085,HS6,270900,2024-12,imports
778
+ 0020,USMCA (NAFTA),9300832007,HS6,270900,2025-01,imports
779
+ 0020,USMCA (NAFTA),8518463187,HS6,270900,2025-02,imports
780
+ 0020,USMCA (NAFTA),8112344804,HS6,270900,2025-03,imports
781
+ 0020,USMCA (NAFTA),7879320171,HS6,270900,2025-04,imports
782
+ 0020,USMCA (NAFTA),7628588144,HS6,270900,2025-05,imports
783
+ 0020,USMCA (NAFTA),7231432005,HS6,270900,2025-06,imports
784
+ 0020,USMCA (NAFTA),8124554458,HS6,270900,2025-07,imports
785
+ 0020,USMCA (NAFTA),7808861588,HS6,270900,2025-08,imports
786
+ 0020,USMCA (NAFTA),7574559940,HS6,270900,2025-09,imports
787
+ 0020,USMCA (NAFTA),7470337158,HS6,270900,2025-10,imports
788
+ 0020,USMCA (NAFTA),6586852974,HS6,270900,2025-11,imports
789
+ 0020,USMCA (NAFTA),7856996839,HS6,270900,2025-12,imports
790
+ 0020,USMCA (NAFTA),6754066154,HS6,270900,2026-01,imports
791
+ 0021,TWENTY LATIN AMERICAN REPUBLICS,2951016908,HS6,270900,2024-01,imports
792
+ 0021,TWENTY LATIN AMERICAN REPUBLICS,2762123125,HS6,270900,2024-02,imports
793
+ 0021,TWENTY LATIN AMERICAN REPUBLICS,2646886405,HS6,270900,2024-03,imports
794
+ 0021,TWENTY LATIN AMERICAN REPUBLICS,2892206723,HS6,270900,2024-04,imports
795
+ 0021,TWENTY LATIN AMERICAN REPUBLICS,3759626216,HS6,270900,2024-05,imports
796
+ 0021,TWENTY LATIN AMERICAN REPUBLICS,3086584813,HS6,270900,2024-06,imports
797
+ 0021,TWENTY LATIN AMERICAN REPUBLICS,3161885166,HS6,270900,2024-07,imports
798
+ 0021,TWENTY LATIN AMERICAN REPUBLICS,3173301147,HS6,270900,2024-08,imports
799
+ 0021,TWENTY LATIN AMERICAN REPUBLICS,2390158879,HS6,270900,2024-09,imports
800
+ 0021,TWENTY LATIN AMERICAN REPUBLICS,2677425676,HS6,270900,2024-10,imports
801
+ 0021,TWENTY LATIN AMERICAN REPUBLICS,3023702643,HS6,270900,2024-11,imports
802
+ 0021,TWENTY LATIN AMERICAN REPUBLICS,2629728091,HS6,270900,2024-12,imports
803
+ 0021,TWENTY LATIN AMERICAN REPUBLICS,2625406081,HS6,270900,2025-01,imports
804
+ 0021,TWENTY LATIN AMERICAN REPUBLICS,2348082996,HS6,270900,2025-02,imports
805
+ 0021,TWENTY LATIN AMERICAN REPUBLICS,2443505387,HS6,270900,2025-03,imports
806
+ 0021,TWENTY LATIN AMERICAN REPUBLICS,2245588028,HS6,270900,2025-04,imports
807
+ 0021,TWENTY LATIN AMERICAN REPUBLICS,2600641959,HS6,270900,2025-05,imports
808
+ 0021,TWENTY LATIN AMERICAN REPUBLICS,2212841062,HS6,270900,2025-06,imports
809
+ 0021,TWENTY LATIN AMERICAN REPUBLICS,2407469619,HS6,270900,2025-07,imports
810
+ 0021,TWENTY LATIN AMERICAN REPUBLICS,2433827618,HS6,270900,2025-08,imports
811
+ 0021,TWENTY LATIN AMERICAN REPUBLICS,2095025431,HS6,270900,2025-09,imports
812
+ 0021,TWENTY LATIN AMERICAN REPUBLICS,1952178180,HS6,270900,2025-10,imports
813
+ 0021,TWENTY LATIN AMERICAN REPUBLICS,1808850158,HS6,270900,2025-11,imports
814
+ 0021,TWENTY LATIN AMERICAN REPUBLICS,1901614891,HS6,270900,2025-12,imports
815
+ 0021,TWENTY LATIN AMERICAN REPUBLICS,2107408609,HS6,270900,2026-01,imports
816
+ 0022,OECD,9347323369,HS6,270900,2024-01,imports
817
+ 0022,OECD,8421848526,HS6,270900,2024-02,imports
818
+ 0022,OECD,8481363732,HS6,270900,2024-03,imports
819
+ 0022,OECD,9586280604,HS6,270900,2024-04,imports
820
+ 0022,OECD,10462321669,HS6,270900,2024-05,imports
821
+ 0022,OECD,9658180550,HS6,270900,2024-06,imports
822
+ 0022,OECD,10932631331,HS6,270900,2024-07,imports
823
+ 0022,OECD,9318811826,HS6,270900,2024-08,imports
824
+ 0022,OECD,9543196351,HS6,270900,2024-09,imports
825
+ 0022,OECD,9153090155,HS6,270900,2024-10,imports
826
+ 0022,OECD,8321518147,HS6,270900,2024-11,imports
827
+ 0022,OECD,9229318771,HS6,270900,2024-12,imports
828
+ 0022,OECD,9886604306,HS6,270900,2025-01,imports
829
+ 0022,OECD,8939178008,HS6,270900,2025-02,imports
830
+ 0022,OECD,8563231871,HS6,270900,2025-03,imports
831
+ 0022,OECD,8681011954,HS6,270900,2025-04,imports
832
+ 0022,OECD,8356844836,HS6,270900,2025-05,imports
833
+ 0022,OECD,7605436986,HS6,270900,2025-06,imports
834
+ 0022,OECD,8691690155,HS6,270900,2025-07,imports
835
+ 0022,OECD,8391259243,HS6,270900,2025-08,imports
836
+ 0022,OECD,8069914030,HS6,270900,2025-09,imports
837
+ 0022,OECD,7856491297,HS6,270900,2025-10,imports
838
+ 0022,OECD,7010090237,HS6,270900,2025-11,imports
839
+ 0022,OECD,8426062311,HS6,270900,2025-12,imports
840
+ 0022,OECD,7181204641,HS6,270900,2026-01,imports
841
+ 0023,NATO,8197546031,HS6,270900,2024-01,imports
842
+ 0023,NATO,7156910969,HS6,270900,2024-02,imports
843
+ 0023,NATO,7526029881,HS6,270900,2024-03,imports
844
+ 0023,NATO,8667490765,HS6,270900,2024-04,imports
845
+ 0023,NATO,9225338513,HS6,270900,2024-05,imports
846
+ 0023,NATO,8479088102,HS6,270900,2024-06,imports
847
+ 0023,NATO,10053363992,HS6,270900,2024-07,imports
848
+ 0023,NATO,8384557600,HS6,270900,2024-08,imports
849
+ 0023,NATO,8537379522,HS6,270900,2024-09,imports
850
+ 0023,NATO,8278603488,HS6,270900,2024-10,imports
851
+ 0023,NATO,7428079852,HS6,270900,2024-11,imports
852
+ 0023,NATO,8373201458,HS6,270900,2024-12,imports
853
+ 0023,NATO,8746622468,HS6,270900,2025-01,imports
854
+ 0023,NATO,7661391427,HS6,270900,2025-02,imports
855
+ 0023,NATO,7398952844,HS6,270900,2025-03,imports
856
+ 0023,NATO,7389589198,HS6,270900,2025-04,imports
857
+ 0023,NATO,7059550892,HS6,270900,2025-05,imports
858
+ 0023,NATO,6479877617,HS6,270900,2025-06,imports
859
+ 0023,NATO,7569417686,HS6,270900,2025-07,imports
860
+ 0023,NATO,7099021130,HS6,270900,2025-08,imports
861
+ 0023,NATO,7140768393,HS6,270900,2025-09,imports
862
+ 0023,NATO,6875780080,HS6,270900,2025-10,imports
863
+ 0023,NATO,6043882356,HS6,270900,2025-11,imports
864
+ 0023,NATO,7550786941,HS6,270900,2025-12,imports
865
+ 0023,NATO,6359026726,HS6,270900,2026-01,imports
866
+ 0024,LAFTA,2951016908,HS6,270900,2024-01,imports
867
+ 0024,LAFTA,2735245168,HS6,270900,2024-02,imports
868
+ 0024,LAFTA,2646886405,HS6,270900,2024-03,imports
869
+ 0024,LAFTA,2892206723,HS6,270900,2024-04,imports
870
+ 0024,LAFTA,3742779664,HS6,270900,2024-05,imports
871
+ 0024,LAFTA,3086584813,HS6,270900,2024-06,imports
872
+ 0024,LAFTA,3161885166,HS6,270900,2024-07,imports
873
+ 0024,LAFTA,3158153445,HS6,270900,2024-08,imports
874
+ 0024,LAFTA,2390158879,HS6,270900,2024-09,imports
875
+ 0024,LAFTA,2677425676,HS6,270900,2024-10,imports
876
+ 0024,LAFTA,3023702643,HS6,270900,2024-11,imports
877
+ 0024,LAFTA,2614350558,HS6,270900,2024-12,imports
878
+ 0024,LAFTA,2625406081,HS6,270900,2025-01,imports
879
+ 0024,LAFTA,2348082996,HS6,270900,2025-02,imports
880
+ 0024,LAFTA,2443505387,HS6,270900,2025-03,imports
881
+ 0024,LAFTA,2220531149,HS6,270900,2025-04,imports
882
+ 0024,LAFTA,2600641959,HS6,270900,2025-05,imports
883
+ 0024,LAFTA,2198348893,HS6,270900,2025-06,imports
884
+ 0024,LAFTA,2407469619,HS6,270900,2025-07,imports
885
+ 0024,LAFTA,2433827618,HS6,270900,2025-08,imports
886
+ 0024,LAFTA,2095025431,HS6,270900,2025-09,imports
887
+ 0024,LAFTA,1952178180,HS6,270900,2025-10,imports
888
+ 0024,LAFTA,1808850158,HS6,270900,2025-11,imports
889
+ 0024,LAFTA,1901614891,HS6,270900,2025-12,imports
890
+ 0024,LAFTA,2107408609,HS6,270900,2026-01,imports
891
+ 0025,EURO AREA,2086440,HS6,270900,2025-09,imports
892
+ 0025,EURO AREA,0,HS6,270900,2025-10,imports
893
+ 0025,EURO AREA,0,HS6,270900,2025-11,imports
894
+ 0025,EURO AREA,0,HS6,270900,2025-12,imports
895
+ 0026,APEC,9139596119,HS6,270900,2024-01,imports
896
+ 0026,APEC,8409216243,HS6,270900,2024-02,imports
897
+ 0026,APEC,8395536821,HS6,270900,2024-03,imports
898
+ 0026,APEC,9422063869,HS6,270900,2024-04,imports
899
+ 0026,APEC,10205111943,HS6,270900,2024-05,imports
900
+ 0026,APEC,9476436730,HS6,270900,2024-06,imports
901
+ 0026,APEC,10820972837,HS6,270900,2024-07,imports
902
+ 0026,APEC,9221087358,HS6,270900,2024-08,imports
903
+ 0026,APEC,9313590679,HS6,270900,2024-09,imports
904
+ 0026,APEC,8927896512,HS6,270900,2024-10,imports
905
+ 0026,APEC,8193319654,HS6,270900,2024-11,imports
906
+ 0026,APEC,9116802085,HS6,270900,2024-12,imports
907
+ 0026,APEC,9323982561,HS6,270900,2025-01,imports
908
+ 0026,APEC,8528582726,HS6,270900,2025-02,imports
909
+ 0026,APEC,8112344804,HS6,270900,2025-03,imports
910
+ 0026,APEC,7879320171,HS6,270900,2025-04,imports
911
+ 0026,APEC,7697869067,HS6,270900,2025-05,imports
912
+ 0026,APEC,7231432005,HS6,270900,2025-06,imports
913
+ 0026,APEC,8124554458,HS6,270900,2025-07,imports
914
+ 0026,APEC,7830508422,HS6,270900,2025-08,imports
915
+ 0026,APEC,7574559940,HS6,270900,2025-09,imports
916
+ 0026,APEC,7470337158,HS6,270900,2025-10,imports
917
+ 0026,APEC,6586878894,HS6,270900,2025-11,imports
918
+ 0026,APEC,7856996839,HS6,270900,2025-12,imports
919
+ 0026,APEC,6754066154,HS6,270900,2026-01,imports
920
+ 0027,ASEAN,69280923,HS6,270900,2025-05,imports
921
+ 0027,ASEAN,0,HS6,270900,2025-06,imports
922
+ 0027,ASEAN,0,HS6,270900,2025-07,imports
923
+ 0027,ASEAN,0,HS6,270900,2025-08,imports
924
+ 0027,ASEAN,0,HS6,270900,2025-09,imports
925
+ 0027,ASEAN,0,HS6,270900,2025-10,imports
926
+ 0027,ASEAN,0,HS6,270900,2025-11,imports
927
+ 0027,ASEAN,0,HS6,270900,2025-12,imports
928
+ 0028,CACM,26877957,HS6,270900,2024-02,imports
929
+ 0028,CACM,0,HS6,270900,2024-03,imports
930
+ 0028,CACM,0,HS6,270900,2024-04,imports
931
+ 0028,CACM,16846552,HS6,270900,2024-05,imports
932
+ 0028,CACM,0,HS6,270900,2024-06,imports
933
+ 0028,CACM,0,HS6,270900,2024-07,imports
934
+ 0028,CACM,15147702,HS6,270900,2024-08,imports
935
+ 0028,CACM,0,HS6,270900,2024-09,imports
936
+ 0028,CACM,0,HS6,270900,2024-10,imports
937
+ 0028,CACM,0,HS6,270900,2024-11,imports
938
+ 0028,CACM,15377533,HS6,270900,2024-12,imports
939
+ 0028,CACM,0,HS6,270900,2025-02,imports
940
+ 0028,CACM,0,HS6,270900,2025-03,imports
941
+ 0028,CACM,25056879,HS6,270900,2025-04,imports
942
+ 0028,CACM,0,HS6,270900,2025-05,imports
943
+ 0028,CACM,14492169,HS6,270900,2025-06,imports
944
+ 0028,CACM,0,HS6,270900,2025-07,imports
945
+ 0028,CACM,0,HS6,270900,2025-08,imports
946
+ 0028,CACM,0,HS6,270900,2025-09,imports
947
+ 0028,CACM,0,HS6,270900,2025-10,imports
948
+ 0028,CACM,0,HS6,270900,2025-11,imports
949
+ 0028,CACM,0,HS6,270900,2025-12,imports
950
+ 1220,CANADA,7989818781,HS6,270900,2024-01,imports
951
+ 1220,CANADA,7144278686,HS6,270900,2024-02,imports
952
+ 1220,CANADA,7440202970,HS6,270900,2024-03,imports
953
+ 1220,CANADA,8503274030,HS6,270900,2024-04,imports
954
+ 1220,CANADA,8968128787,HS6,270900,2024-05,imports
955
+ 1220,CANADA,8271542250,HS6,270900,2024-06,imports
956
+ 1220,CANADA,9941705498,HS6,270900,2024-07,imports
957
+ 1220,CANADA,8286833132,HS6,270900,2024-08,imports
958
+ 1220,CANADA,8285286231,HS6,270900,2024-09,imports
959
+ 1220,CANADA,8053393961,HS6,270900,2024-10,imports
960
+ 1220,CANADA,7299881359,HS6,270900,2024-11,imports
961
+ 1220,CANADA,8260684772,HS6,270900,2024-12,imports
962
+ 1220,CANADA,8580315567,HS6,270900,2025-01,imports
963
+ 1220,CANADA,7579877855,HS6,270900,2025-02,imports
964
+ 1220,CANADA,7296280579,HS6,270900,2025-03,imports
965
+ 1220,CANADA,7143817374,HS6,270900,2025-04,imports
966
+ 1220,CANADA,6821300616,HS6,270900,2025-05,imports
967
+ 1220,CANADA,6415349710,HS6,270900,2025-06,imports
968
+ 1220,CANADA,7502502844,HS6,270900,2025-07,imports
969
+ 1220,CANADA,7016254517,HS6,270900,2025-08,imports
970
+ 1220,CANADA,6969936088,HS6,270900,2025-09,imports
971
+ 1220,CANADA,6754196151,HS6,270900,2025-10,imports
972
+ 1220,CANADA,5893528555,HS6,270900,2025-11,imports
973
+ 1220,CANADA,7418745120,HS6,270900,2025-12,imports
974
+ 1220,CANADA,6290564633,HS6,270900,2026-01,imports
975
+ 2010,MEXICO,1149777338,HS6,270900,2024-01,imports
976
+ 2010,MEXICO,1264937557,HS6,270900,2024-02,imports
977
+ 2010,MEXICO,955333851,HS6,270900,2024-03,imports
978
+ 2010,MEXICO,918789839,HS6,270900,2024-04,imports
979
+ 2010,MEXICO,1236983156,HS6,270900,2024-05,imports
980
+ 2010,MEXICO,1179092448,HS6,270900,2024-06,imports
981
+ 2010,MEXICO,879267339,HS6,270900,2024-07,imports
982
+ 2010,MEXICO,934254226,HS6,270900,2024-08,imports
983
+ 2010,MEXICO,1005816829,HS6,270900,2024-09,imports
984
+ 2010,MEXICO,874486667,HS6,270900,2024-10,imports
985
+ 2010,MEXICO,893438295,HS6,270900,2024-11,imports
986
+ 2010,MEXICO,856117313,HS6,270900,2024-12,imports
987
+ 2010,MEXICO,720516440,HS6,270900,2025-01,imports
988
+ 2010,MEXICO,938585332,HS6,270900,2025-02,imports
989
+ 2010,MEXICO,816064225,HS6,270900,2025-03,imports
990
+ 2010,MEXICO,735502797,HS6,270900,2025-04,imports
991
+ 2010,MEXICO,807287528,HS6,270900,2025-05,imports
992
+ 2010,MEXICO,816082295,HS6,270900,2025-06,imports
993
+ 2010,MEXICO,622051614,HS6,270900,2025-07,imports
994
+ 2010,MEXICO,792607071,HS6,270900,2025-08,imports
995
+ 2010,MEXICO,604623852,HS6,270900,2025-09,imports
996
+ 2010,MEXICO,716141007,HS6,270900,2025-10,imports
997
+ 2010,MEXICO,693324419,HS6,270900,2025-11,imports
998
+ 2010,MEXICO,438251719,HS6,270900,2025-12,imports
999
+ 2010,MEXICO,463501521,HS6,270900,2026-01,imports
1000
+ 2050,GUATEMALA,26877957,HS6,270900,2024-02,imports
1001
+ 2050,GUATEMALA,0,HS6,270900,2024-03,imports
1002
+ 2050,GUATEMALA,0,HS6,270900,2024-04,imports
1003
+ 2050,GUATEMALA,16846552,HS6,270900,2024-05,imports
1004
+ 2050,GUATEMALA,0,HS6,270900,2024-06,imports
1005
+ 2050,GUATEMALA,0,HS6,270900,2024-07,imports
1006
+ 2050,GUATEMALA,15147702,HS6,270900,2024-08,imports
1007
+ 2050,GUATEMALA,0,HS6,270900,2024-09,imports
1008
+ 2050,GUATEMALA,0,HS6,270900,2024-10,imports
1009
+ 2050,GUATEMALA,0,HS6,270900,2024-11,imports
1010
+ 2050,GUATEMALA,15377533,HS6,270900,2024-12,imports
1011
+ 2050,GUATEMALA,0,HS6,270900,2025-02,imports
1012
+ 2050,GUATEMALA,0,HS6,270900,2025-03,imports
1013
+ 2050,GUATEMALA,25056879,HS6,270900,2025-04,imports
1014
+ 2050,GUATEMALA,0,HS6,270900,2025-05,imports
1015
+ 2050,GUATEMALA,14492169,HS6,270900,2025-06,imports
1016
+ 2050,GUATEMALA,0,HS6,270900,2025-07,imports
1017
+ 2050,GUATEMALA,0,HS6,270900,2025-08,imports
1018
+ 2050,GUATEMALA,0,HS6,270900,2025-09,imports
1019
+ 2050,GUATEMALA,0,HS6,270900,2025-10,imports
1020
+ 2050,GUATEMALA,0,HS6,270900,2025-11,imports
1021
+ 2050,GUATEMALA,0,HS6,270900,2025-12,imports
1022
+ 2XXX,CENTRAL AMERICA,127642518,HS6,270900,2024-01,imports
1023
+ 2XXX,CENTRAL AMERICA,112913062,HS6,270900,2024-02,imports
1024
+ 2XXX,CENTRAL AMERICA,84551955,HS6,270900,2024-03,imports
1025
+ 2XXX,CENTRAL AMERICA,86769205,HS6,270900,2024-04,imports
1026
+ 2XXX,CENTRAL AMERICA,44509855,HS6,270900,2024-05,imports
1027
+ 2XXX,CENTRAL AMERICA,182678183,HS6,270900,2024-06,imports
1028
+ 2XXX,CENTRAL AMERICA,107139983,HS6,270900,2024-07,imports
1029
+ 2XXX,CENTRAL AMERICA,111523674,HS6,270900,2024-08,imports
1030
+ 2XXX,CENTRAL AMERICA,155539863,HS6,270900,2024-09,imports
1031
+ 2XXX,CENTRAL AMERICA,95509846,HS6,270900,2024-10,imports
1032
+ 2XXX,CENTRAL AMERICA,132714832,HS6,270900,2024-11,imports
1033
+ 2XXX,CENTRAL AMERICA,170154792,HS6,270900,2024-12,imports
1034
+ 2XXX,CENTRAL AMERICA,63705755,HS6,270900,2025-01,imports
1035
+ 2XXX,CENTRAL AMERICA,70389908,HS6,270900,2025-02,imports
1036
+ 2XXX,CENTRAL AMERICA,82887013,HS6,270900,2025-03,imports
1037
+ 2XXX,CENTRAL AMERICA,134411037,HS6,270900,2025-04,imports
1038
+ 2XXX,CENTRAL AMERICA,74419493,HS6,270900,2025-05,imports
1039
+ 2XXX,CENTRAL AMERICA,111024473,HS6,270900,2025-06,imports
1040
+ 2XXX,CENTRAL AMERICA,73459243,HS6,270900,2025-07,imports
1041
+ 2XXX,CENTRAL AMERICA,105194284,HS6,270900,2025-08,imports
1042
+ 2XXX,CENTRAL AMERICA,0,HS6,270900,2025-09,imports
1043
+ 2XXX,CENTRAL AMERICA,79487543,HS6,270900,2025-10,imports
1044
+ 2XXX,CENTRAL AMERICA,31705979,HS6,270900,2025-11,imports
1045
+ 2XXX,CENTRAL AMERICA,84227231,HS6,270900,2025-12,imports
1046
+ 2XXX,CENTRAL AMERICA,62550097,HS6,270900,2026-01,imports
1047
+ 3XXX,SOUTH AMERICA,2234206202,HS6,270900,2024-01,imports
1048
+ 3XXX,SOUTH AMERICA,1922094140,HS6,270900,2024-02,imports
1049
+ 3XXX,SOUTH AMERICA,2046926190,HS6,270900,2024-03,imports
1050
+ 3XXX,SOUTH AMERICA,2438641617,HS6,270900,2024-04,imports
1051
+ 3XXX,SOUTH AMERICA,3024066022,HS6,270900,2024-05,imports
1052
+ 3XXX,SOUTH AMERICA,2610557500,HS6,270900,2024-06,imports
1053
+ 3XXX,SOUTH AMERICA,3026199209,HS6,270900,2024-07,imports
1054
+ 3XXX,SOUTH AMERICA,2595857638,HS6,270900,2024-08,imports
1055
+ 3XXX,SOUTH AMERICA,1716649940,HS6,270900,2024-09,imports
1056
+ 3XXX,SOUTH AMERICA,2148793797,HS6,270900,2024-10,imports
1057
+ 3XXX,SOUTH AMERICA,2350643065,HS6,270900,2024-11,imports
1058
+ 3XXX,SOUTH AMERICA,2005578261,HS6,270900,2024-12,imports
1059
+ 3XXX,SOUTH AMERICA,2238630403,HS6,270900,2025-01,imports
1060
+ 3XXX,SOUTH AMERICA,1518350211,HS6,270900,2025-02,imports
1061
+ 3XXX,SOUTH AMERICA,1968758432,HS6,270900,2025-03,imports
1062
+ 3XXX,SOUTH AMERICA,2148201501,HS6,270900,2025-04,imports
1063
+ 3XXX,SOUTH AMERICA,2244367792,HS6,270900,2025-05,imports
1064
+ 3XXX,SOUTH AMERICA,1851289380,HS6,270900,2025-06,imports
1065
+ 3XXX,SOUTH AMERICA,2312290616,HS6,270900,2025-07,imports
1066
+ 3XXX,SOUTH AMERICA,2223009772,HS6,270900,2025-08,imports
1067
+ 3XXX,SOUTH AMERICA,1728220653,HS6,270900,2025-09,imports
1068
+ 3XXX,SOUTH AMERICA,1671224573,HS6,270900,2025-10,imports
1069
+ 3XXX,SOUTH AMERICA,1481210220,HS6,270900,2025-11,imports
1070
+ 3XXX,SOUTH AMERICA,1893620658,HS6,270900,2025-12,imports
1071
+ 3XXX,SOUTH AMERICA,2100456979,HS6,270900,2026-01,imports
data/cloud/cftc_positioning.csv ADDED
The diff for this file is too large to render. See raw diff
 
data/cloud/worldbank_commodities.csv ADDED
The diff for this file is too large to render. See raw diff
 
data/cloud/worldbank_debug.csv ADDED
@@ -0,0 +1 @@
 
 
1
+ ,"Crude oil, average","Crude oil, Brent","Crude oil, Dubai","Crude oil, WTI","Coal, Australian","Coal, South African **","Natural gas, US","Natural gas, Europe","Liquefied natural gas, Japan",Natural gas index,Cocoa,"Coffee, Arabica","Coffee, Robusta","Tea, avg 3 auctions","Tea, Colombo","Tea, Kolkata","Tea, Mombasa",Coconut oil,Groundnuts,Fish meal,Groundnut oil **,Palm oil,Palm kernel oil,Soybeans,Soybean oil,Soybean meal,Rapeseed oil,Sunflower oil,Barley,Maize,Sorghum,"Rice, Thai 5% ","Rice, Thai 25% ","Rice, Thai A.1","Rice, Viet Namese 5%","Wheat, US SRW","Wheat, US HRW","Banana, Europe","Banana, US",Orange,Beef **,Chicken **,Lamb **,"Shrimps, Mexican","Sugar, EU","Sugar, US","Sugar, world","Tobacco, US import u.v.","Logs, Cameroon","Logs, Malaysian","Sawnwood, Cameroon","Sawnwood, Malaysian",Plywood,"Cotton, A Index","Rubber, TSR20 **","Rubber, RSS3",Phosphate rock,DAP,TSP,Urea ,Potassium chloride **,Aluminum,"Iron ore, cfr spot",Copper,Lead,Tin,Nickel,Zinc,Gold,Platinum,Silver
data/consumer_confidence_cache.csv ADDED
@@ -0,0 +1,604 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ 日期,value
2
+ 1970-03-31,78.1
3
+ 1970-06-30,75.4
4
+ 1970-09-30,77.6
5
+ 1970-12-31,72.4
6
+ 1971-03-31,78.1
7
+ 1971-06-30,80.2
8
+ 1971-09-30,82.1
9
+ 1971-12-31,82.0
10
+ 1972-03-31,92.8
11
+ 1972-06-30,88.6
12
+ 1972-09-30,95.2
13
+ 1972-12-31,90.7
14
+ 1973-03-31,81.9
15
+ 1973-06-30,77.0
16
+ 1973-09-30,72.0
17
+ 1973-12-31,76.5
18
+ 1974-03-31,61.8
19
+ 1974-06-30,72.1
20
+ 1974-09-30,64.4
21
+ 1974-12-31,59.5
22
+ 1975-03-31,57.6
23
+ 1975-06-30,72.8
24
+ 1975-09-30,75.7
25
+ 1975-12-31,75.6
26
+ 1976-03-31,84.6
27
+ 1976-06-30,83.3
28
+ 1976-09-30,89.7
29
+ 1976-12-31,87.0
30
+ 1977-03-31,87.1
31
+ 1977-06-30,90.2
32
+ 1977-09-30,89.0
33
+ 1977-12-31,84.4
34
+ 1978-02-28,83.7
35
+ 1978-03-31,84.3
36
+ 1978-04-30,78.8
37
+ 1978-05-31,81.6
38
+ 1978-06-30,82.9
39
+ 1978-07-31,80.0
40
+ 1978-08-31,82.4
41
+ 1978-09-30,78.4
42
+ 1978-10-31,80.4
43
+ 1978-11-30,79.3
44
+ 1978-12-31,75.0
45
+ 1979-01-31,66.1
46
+ 1979-02-28,72.1
47
+ 1979-03-31,73.9
48
+ 1979-04-30,68.4
49
+ 1979-05-31,66.0
50
+ 1979-06-30,68.1
51
+ 1979-07-31,65.8
52
+ 1979-08-31,60.4
53
+ 1979-09-30,64.5
54
+ 1979-10-31,66.7
55
+ 1979-11-30,62.1
56
+ 1979-12-31,63.3
57
+ 1980-01-31,61.0
58
+ 1980-02-29,67.0
59
+ 1980-03-31,66.9
60
+ 1980-04-30,56.5
61
+ 1980-05-31,52.7
62
+ 1980-06-30,51.7
63
+ 1980-07-31,58.7
64
+ 1980-08-31,62.3
65
+ 1980-09-30,67.3
66
+ 1980-10-31,73.7
67
+ 1980-11-30,75.0
68
+ 1980-12-31,76.7
69
+ 1981-01-31,64.5
70
+ 1981-02-28,71.4
71
+ 1981-03-31,66.9
72
+ 1981-04-30,66.5
73
+ 1981-05-31,72.4
74
+ 1981-06-30,76.3
75
+ 1981-07-31,73.1
76
+ 1981-08-31,74.1
77
+ 1981-09-30,77.2
78
+ 1981-10-31,73.1
79
+ 1981-11-30,70.3
80
+ 1981-12-31,62.5
81
+ 1982-01-31,64.3
82
+ 1982-02-28,71.0
83
+ 1982-03-31,66.5
84
+ 1982-04-30,62.0
85
+ 1982-05-31,65.5
86
+ 1982-06-30,67.5
87
+ 1982-07-31,65.7
88
+ 1982-08-31,65.4
89
+ 1982-09-30,65.4
90
+ 1982-10-31,69.3
91
+ 1982-11-30,73.4
92
+ 1982-12-31,72.1
93
+ 1983-01-31,71.9
94
+ 1983-02-28,70.4
95
+ 1983-03-31,74.6
96
+ 1983-04-30,80.8
97
+ 1983-05-31,89.1
98
+ 1983-06-30,93.3
99
+ 1983-07-31,92.2
100
+ 1983-08-31,92.8
101
+ 1983-09-30,90.9
102
+ 1983-10-31,89.9
103
+ 1983-11-30,89.3
104
+ 1983-12-31,91.1
105
+ 1984-01-31,94.2
106
+ 1984-02-29,100.1
107
+ 1984-03-31,97.4
108
+ 1984-04-30,101.0
109
+ 1984-05-31,96.1
110
+ 1984-06-30,98.1
111
+ 1984-07-31,95.5
112
+ 1984-08-31,96.6
113
+ 1984-09-30,99.1
114
+ 1984-10-31,100.9
115
+ 1984-11-30,96.3
116
+ 1984-12-31,95.7
117
+ 1985-01-31,92.9
118
+ 1985-02-28,96.0
119
+ 1985-03-31,93.7
120
+ 1985-04-30,93.7
121
+ 1985-05-31,94.6
122
+ 1985-06-30,91.8
123
+ 1985-07-31,96.5
124
+ 1985-08-31,94.0
125
+ 1985-09-30,92.4
126
+ 1985-10-31,92.1
127
+ 1985-11-30,88.4
128
+ 1985-12-31,90.9
129
+ 1986-01-31,93.9
130
+ 1986-02-28,95.6
131
+ 1986-03-31,95.9
132
+ 1986-04-30,95.1
133
+ 1986-05-31,96.2
134
+ 1986-06-30,94.8
135
+ 1986-07-31,99.3
136
+ 1986-08-31,97.7
137
+ 1986-09-30,94.9
138
+ 1986-10-31,91.9
139
+ 1986-11-30,95.6
140
+ 1986-12-31,91.4
141
+ 1987-01-31,89.1
142
+ 1987-02-28,90.4
143
+ 1987-03-31,90.2
144
+ 1987-04-30,90.8
145
+ 1987-05-31,92.8
146
+ 1987-06-30,91.1
147
+ 1987-07-31,91.5
148
+ 1987-08-31,93.7
149
+ 1987-09-30,94.4
150
+ 1987-10-31,93.6
151
+ 1987-11-30,89.3
152
+ 1987-12-31,83.1
153
+ 1988-01-31,86.8
154
+ 1988-02-29,90.8
155
+ 1988-03-31,91.6
156
+ 1988-04-30,94.6
157
+ 1988-05-31,91.2
158
+ 1988-06-30,94.8
159
+ 1988-07-31,94.7
160
+ 1988-08-31,93.4
161
+ 1988-09-30,97.4
162
+ 1988-10-31,97.3
163
+ 1988-11-30,94.1
164
+ 1988-12-31,93.0
165
+ 1989-01-31,91.9
166
+ 1989-02-28,97.9
167
+ 1989-03-31,95.4
168
+ 1989-04-30,94.3
169
+ 1989-05-31,91.5
170
+ 1989-06-30,90.7
171
+ 1989-07-31,90.6
172
+ 1989-08-31,92.0
173
+ 1989-09-30,89.6
174
+ 1989-10-31,95.8
175
+ 1989-11-30,93.9
176
+ 1989-12-31,90.9
177
+ 1990-01-31,90.5
178
+ 1990-02-28,93.0
179
+ 1990-03-31,89.5
180
+ 1990-04-30,91.3
181
+ 1990-05-31,93.9
182
+ 1990-06-30,90.6
183
+ 1990-07-31,88.3
184
+ 1990-08-31,88.2
185
+ 1990-09-30,76.4
186
+ 1990-10-31,72.8
187
+ 1990-11-30,63.9
188
+ 1990-12-31,66.0
189
+ 1991-01-31,65.5
190
+ 1991-02-28,66.8
191
+ 1991-03-31,70.4
192
+ 1991-04-30,87.7
193
+ 1991-05-31,81.8
194
+ 1991-06-30,78.3
195
+ 1991-07-31,82.1
196
+ 1991-08-31,82.9
197
+ 1991-09-30,82.0
198
+ 1991-10-31,83.0
199
+ 1991-11-30,78.3
200
+ 1991-12-31,69.1
201
+ 1992-01-31,68.2
202
+ 1992-02-29,67.5
203
+ 1992-03-31,68.8
204
+ 1992-04-30,76.0
205
+ 1992-05-31,77.2
206
+ 1992-06-30,79.2
207
+ 1992-07-31,80.4
208
+ 1992-08-31,76.6
209
+ 1992-09-30,76.1
210
+ 1992-10-31,75.6
211
+ 1992-11-30,73.3
212
+ 1992-12-31,85.3
213
+ 1993-01-31,91.0
214
+ 1993-02-28,89.3
215
+ 1993-03-31,86.6
216
+ 1993-04-30,85.9
217
+ 1993-05-31,85.6
218
+ 1993-06-30,80.3
219
+ 1993-07-31,81.5
220
+ 1993-08-31,77.0
221
+ 1993-09-30,77.3
222
+ 1993-10-31,77.9
223
+ 1993-11-30,82.7
224
+ 1993-12-31,81.2
225
+ 1994-01-31,88.2
226
+ 1994-02-28,94.3
227
+ 1994-03-31,93.2
228
+ 1994-04-30,91.5
229
+ 1994-05-31,92.6
230
+ 1994-06-30,92.8
231
+ 1994-07-31,91.2
232
+ 1994-08-31,89.0
233
+ 1994-09-30,91.7
234
+ 1994-10-31,91.5
235
+ 1994-11-30,92.7
236
+ 1994-12-31,91.6
237
+ 1995-01-31,95.1
238
+ 1995-02-28,97.6
239
+ 1995-03-31,95.1
240
+ 1995-04-30,90.3
241
+ 1995-05-31,92.5
242
+ 1995-06-30,89.8
243
+ 1995-07-31,92.7
244
+ 1995-08-31,94.4
245
+ 1995-09-30,96.2
246
+ 1995-10-31,88.9
247
+ 1995-11-30,90.2
248
+ 1995-12-31,88.2
249
+ 1996-01-31,91.0
250
+ 1996-02-29,89.3
251
+ 1996-03-31,88.5
252
+ 1996-04-30,93.7
253
+ 1996-05-31,92.7
254
+ 1996-06-30,89.4
255
+ 1996-07-31,92.4
256
+ 1996-08-31,94.7
257
+ 1996-09-30,95.3
258
+ 1996-10-31,94.7
259
+ 1996-11-30,96.5
260
+ 1996-12-31,99.2
261
+ 1997-01-31,96.9
262
+ 1997-02-28,97.4
263
+ 1997-03-31,99.7
264
+ 1997-04-30,100.0
265
+ 1997-05-31,101.4
266
+ 1997-06-30,103.2
267
+ 1997-07-31,104.5
268
+ 1997-08-31,107.1
269
+ 1997-09-30,104.4
270
+ 1997-10-31,106.0
271
+ 1997-11-30,105.6
272
+ 1997-12-31,107.2
273
+ 1998-01-31,102.1
274
+ 1998-02-28,106.6
275
+ 1998-03-31,110.4
276
+ 1998-04-30,106.5
277
+ 1998-05-31,108.7
278
+ 1998-06-30,106.5
279
+ 1998-07-31,105.6
280
+ 1998-08-31,105.2
281
+ 1998-09-30,104.4
282
+ 1998-10-31,100.9
283
+ 1998-11-30,97.4
284
+ 1998-12-31,102.7
285
+ 1999-01-31,100.5
286
+ 1999-02-28,103.9
287
+ 1999-03-31,108.1
288
+ 1999-04-30,105.7
289
+ 1999-05-31,104.6
290
+ 1999-06-30,106.8
291
+ 1999-07-31,107.3
292
+ 1999-08-31,106.0
293
+ 1999-09-30,104.5
294
+ 1999-10-31,107.2
295
+ 1999-11-30,103.2
296
+ 1999-12-31,107.2
297
+ 2000-01-31,105.4
298
+ 2000-02-29,111.4
299
+ 2000-03-31,111.3
300
+ 2000-04-30,107.1
301
+ 2000-05-31,109.2
302
+ 2000-06-30,110.7
303
+ 2000-07-31,106.4
304
+ 2000-08-31,108.3
305
+ 2000-09-30,107.3
306
+ 2000-10-31,106.8
307
+ 2000-11-30,105.8
308
+ 2000-12-31,107.6
309
+ 2001-01-31,98.4
310
+ 2001-02-28,94.7
311
+ 2001-03-31,90.6
312
+ 2001-04-30,91.5
313
+ 2001-05-31,88.4
314
+ 2001-06-30,92.0
315
+ 2001-07-31,92.6
316
+ 2001-08-31,92.4
317
+ 2001-09-30,91.5
318
+ 2001-10-31,81.8
319
+ 2001-11-30,82.7
320
+ 2001-12-31,83.9
321
+ 2002-01-31,88.8
322
+ 2002-02-28,93.0
323
+ 2002-03-31,90.7
324
+ 2002-04-30,95.7
325
+ 2002-05-31,93.0
326
+ 2002-06-30,96.9
327
+ 2002-07-31,92.4
328
+ 2002-08-31,88.1
329
+ 2002-09-30,87.6
330
+ 2002-10-31,86.1
331
+ 2002-11-30,80.6
332
+ 2002-12-31,84.2
333
+ 2003-01-31,86.7
334
+ 2003-02-28,82.4
335
+ 2003-03-31,79.9
336
+ 2003-04-30,77.6
337
+ 2003-05-31,86.0
338
+ 2003-06-30,92.1
339
+ 2003-07-31,89.7
340
+ 2003-08-31,90.9
341
+ 2003-09-30,89.3
342
+ 2003-10-31,87.7
343
+ 2003-11-30,89.6
344
+ 2003-12-31,93.7
345
+ 2004-01-31,92.6
346
+ 2004-02-29,103.8
347
+ 2004-03-31,94.4
348
+ 2004-04-30,95.8
349
+ 2004-05-31,94.2
350
+ 2004-06-30,90.2
351
+ 2004-07-31,95.6
352
+ 2004-08-31,96.7
353
+ 2004-09-30,95.9
354
+ 2004-10-31,94.2
355
+ 2004-11-30,91.7
356
+ 2004-12-31,92.8
357
+ 2005-01-31,97.1
358
+ 2005-02-28,95.5
359
+ 2005-03-31,94.1
360
+ 2005-04-30,92.6
361
+ 2005-05-31,87.7
362
+ 2005-06-30,86.9
363
+ 2005-07-31,96.0
364
+ 2005-08-31,96.5
365
+ 2005-09-30,89.1
366
+ 2005-10-31,76.9
367
+ 2005-11-30,74.2
368
+ 2005-12-31,81.6
369
+ 2006-01-31,91.5
370
+ 2006-02-28,91.2
371
+ 2006-03-31,86.7
372
+ 2006-04-30,88.9
373
+ 2006-05-31,87.4
374
+ 2006-06-30,79.1
375
+ 2006-07-31,84.9
376
+ 2006-08-31,84.7
377
+ 2006-09-30,82.0
378
+ 2006-10-31,85.4
379
+ 2006-11-30,93.6
380
+ 2006-12-31,92.1
381
+ 2007-01-31,91.7
382
+ 2007-02-28,96.9
383
+ 2007-03-31,91.3
384
+ 2007-04-30,88.4
385
+ 2007-05-31,87.1
386
+ 2007-06-30,88.3
387
+ 2007-07-31,85.3
388
+ 2007-08-31,90.4
389
+ 2007-09-30,83.4
390
+ 2007-10-31,83.4
391
+ 2007-11-30,80.9
392
+ 2007-12-31,76.1
393
+ 2008-01-31,75.5
394
+ 2008-02-29,70.8
395
+ 2008-03-31,69.5
396
+ 2008-04-30,62.6
397
+ 2008-05-31,59.5
398
+ 2008-06-30,56.4
399
+ 2008-07-31,61.2
400
+ 2008-08-31,61.7
401
+ 2008-09-30,70.3
402
+ 2008-10-31,57.6
403
+ 2008-11-30,55.3
404
+ 2008-12-31,60.1
405
+ 2009-01-31,61.9
406
+ 2009-02-28,56.3
407
+ 2009-03-31,57.3
408
+ 2009-04-30,61.9
409
+ 2009-05-31,68.7
410
+ 2009-06-30,70.8
411
+ 2009-07-31,66.0
412
+ 2009-08-31,65.7
413
+ 2009-09-30,73.5
414
+ 2009-10-31,70.6
415
+ 2009-11-30,67.4
416
+ 2009-12-31,72.5
417
+ 2010-01-31,74.4
418
+ 2010-02-28,73.6
419
+ 2010-03-31,73.6
420
+ 2010-04-30,72.2
421
+ 2010-05-31,73.6
422
+ 2010-06-30,76.0
423
+ 2010-07-31,67.8
424
+ 2010-08-31,68.9
425
+ 2010-09-30,66.6
426
+ 2010-10-31,67.7
427
+ 2010-11-30,71.6
428
+ 2010-12-31,74.5
429
+ 2011-01-31,74.2
430
+ 2011-02-28,77.5
431
+ 2011-03-31,67.5
432
+ 2011-04-30,69.8
433
+ 2011-05-31,74.3
434
+ 2011-06-30,71.8
435
+ 2011-07-31,63.7
436
+ 2011-08-31,55.7
437
+ 2011-09-30,59.4
438
+ 2011-10-31,60.9
439
+ 2011-11-30,64.1
440
+ 2011-12-31,69.9
441
+ 2012-01-31,75.0
442
+ 2012-02-29,75.3
443
+ 2012-03-31,76.2
444
+ 2012-04-30,76.4
445
+ 2012-05-31,79.3
446
+ 2012-06-30,73.2
447
+ 2012-07-31,72.3
448
+ 2012-08-31,74.3
449
+ 2012-09-30,78.3
450
+ 2012-10-31,82.6
451
+ 2012-11-30,82.7
452
+ 2012-12-31,72.9
453
+ 2013-01-31,71.3
454
+ 2013-02-28,76.3
455
+ 2013-03-31,78.6
456
+ 2013-04-30,76.4
457
+ 2013-05-31,84.5
458
+ 2013-06-30,84.1
459
+ 2013-07-31,85.1
460
+ 2013-08-31,82.1
461
+ 2013-09-30,77.5
462
+ 2013-10-31,73.2
463
+ 2013-11-30,75.1
464
+ 2013-12-31,82.5
465
+ 2014-01-31,81.2
466
+ 2014-02-28,81.6
467
+ 2014-03-31,80.0
468
+ 2014-04-30,84.1
469
+ 2014-05-31,81.9
470
+ 2014-06-30,82.5
471
+ 2014-07-31,81.3
472
+ 2014-08-31,82.5
473
+ 2014-09-30,84.6
474
+ 2014-10-31,86.9
475
+ 2014-11-30,88.8
476
+ 2014-12-31,93.6
477
+ 2015-01-31,98.1
478
+ 2015-02-28,95.4
479
+ 2015-03-31,93.0
480
+ 2015-04-30,95.9
481
+ 2015-05-31,90.7
482
+ 2015-06-30,96.1
483
+ 2015-07-31,93.1
484
+ 2015-08-31,91.9
485
+ 2015-09-30,87.2
486
+ 2015-10-31,90.0
487
+ 2015-11-30,91.3
488
+ 2015-12-31,92.6
489
+ 2016-01-31,92.0
490
+ 2016-02-29,91.7
491
+ 2016-03-31,90.0
492
+ 2016-04-30,89.0
493
+ 2016-05-31,94.7
494
+ 2016-06-30,93.5
495
+ 2016-07-31,90.0
496
+ 2016-08-31,89.8
497
+ 2016-09-30,91.2
498
+ 2016-10-31,87.2
499
+ 2016-11-30,93.8
500
+ 2016-12-31,98.2
501
+ 2017-01-31,98.5
502
+ 2017-02-28,96.3
503
+ 2017-03-31,96.9
504
+ 2017-04-30,97.0
505
+ 2017-05-31,97.1
506
+ 2017-06-30,95.1
507
+ 2017-07-31,93.4
508
+ 2017-08-31,97.6
509
+ 2017-09-30,95.1
510
+ 2017-10-31,100.7
511
+ 2017-11-30,98.5
512
+ 2017-12-31,95.9
513
+ 2018-01-31,94.4
514
+ 2018-02-28,99.9
515
+ 2018-03-31,101.4
516
+ 2018-04-30,98.8
517
+ 2018-05-31,98.0
518
+ 2018-06-30,98.2
519
+ 2018-07-31,97.9
520
+ 2018-08-31,96.2
521
+ 2018-09-30,100.1
522
+ 2018-10-31,98.6
523
+ 2018-11-30,97.5
524
+ 2018-12-31,98.3
525
+ 2019-01-31,90.7
526
+ 2019-02-28,95.5
527
+ 2019-03-31,98.4
528
+ 2019-04-30,97.2
529
+ 2019-05-31,100.0
530
+ 2019-06-30,98.2
531
+ 2019-07-31,98.4
532
+ 2019-08-31,89.8
533
+ 2019-09-30,93.2
534
+ 2019-10-31,95.5
535
+ 2019-11-30,95.7
536
+ 2019-12-31,99.3
537
+ 2020-01-31,99.8
538
+ 2020-02-29,101.0
539
+ 2020-03-31,89.1
540
+ 2020-04-30,71.8
541
+ 2020-05-31,72.3
542
+ 2020-06-30,78.1
543
+ 2020-07-31,72.5
544
+ 2020-08-31,74.1
545
+ 2020-09-30,78.9
546
+ 2020-10-31,81.8
547
+ 2020-11-30,76.9
548
+ 2020-12-31,80.7
549
+ 2021-01-31,79.0
550
+ 2021-02-28,76.8
551
+ 2021-03-31,84.9
552
+ 2021-04-30,88.3
553
+ 2021-05-31,82.9
554
+ 2021-06-30,85.5
555
+ 2021-07-31,81.2
556
+ 2021-08-31,70.3
557
+ 2021-09-30,71.0
558
+ 2021-10-31,71.7
559
+ 2021-11-30,67.4
560
+ 2021-12-31,70.6
561
+ 2022-01-31,67.2
562
+ 2022-02-28,62.8
563
+ 2022-03-31,59.4
564
+ 2022-04-30,65.2
565
+ 2022-05-31,58.4
566
+ 2022-06-30,50.0
567
+ 2022-07-31,51.5
568
+ 2022-08-31,58.2
569
+ 2022-09-30,58.6
570
+ 2022-10-31,59.9
571
+ 2022-11-30,56.8
572
+ 2022-12-31,59.7
573
+ 2023-01-31,64.9
574
+ 2023-02-28,67.0
575
+ 2023-03-31,62.0
576
+ 2023-04-30,63.5
577
+ 2023-05-31,59.2
578
+ 2023-06-30,64.4
579
+ 2023-07-31,71.6
580
+ 2023-08-31,69.5
581
+ 2023-09-30,68.1
582
+ 2023-10-31,63.8
583
+ 2023-11-30,61.3
584
+ 2023-12-31,69.7
585
+ 2024-01-31,78.8
586
+ 2024-02-29,79.6
587
+ 2024-03-31,79.4
588
+ 2024-04-30,77.2
589
+ 2024-05-31,69.1
590
+ 2024-06-30,68.2
591
+ 2024-07-31,66.4
592
+ 2024-08-31,67.9
593
+ 2024-09-30,70.1
594
+ 2024-10-31,70.5
595
+ 2024-11-30,71.8
596
+ 2024-12-31,74.0
597
+ 2025-01-31,71.1
598
+ 2025-02-28,64.7
599
+ 2025-03-31,57.0
600
+ 2025-04-30,52.2
601
+ 2025-05-31,52.2
602
+ 2025-06-30,60.7
603
+ 2025-07-31,61.8
604
+ 2025-08-31,58.2
data/intermediate/public_core_monthly_hub.csv ADDED
@@ -0,0 +1 @@
 
 
1
+ ""
data/intermediate/public_core_monthly_hub_raw.csv ADDED
@@ -0,0 +1 @@
 
 
1
+ ""
data/knowledge_base/README.md ADDED
@@ -0,0 +1,10 @@
 
 
 
 
 
 
 
 
 
 
 
1
+ # Knowledge Base
2
+
3
+ This folder stores manually curated or LLM-assisted structured event and report data.
4
+
5
+ Expected files:
6
+
7
+ - `oil_market_event_registry.csv`
8
+ - `opec_momr_manual_revisions.csv`
9
+
10
+ These files are templates for the upgrade path and can be safely edited by hand.
data/knowledge_base/oil_market_event_candidates.csv ADDED
@@ -0,0 +1,26 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ candidate_id,event_name,start_date,end_date,active_days,llm_intensity,llm_sentiment,source_type,source_path
2
+ pingjin_20050101,pingjin,2005-01-01,2006-12-31,730,5.0,0.0,shock_matrix,E:\大三下\比赛\花旗杯\模型\data\csv_raw\geopolitical_shocks.csv
3
+ crisis_of_iran_20050801,crisis_of_iran,2005-08-01,2006-06-30,334,7.0,0.5,shock_matrix,E:\大三下\比赛\花旗杯\模型\data\csv_raw\geopolitical_shocks.csv
4
+ death_of_king_20050801,death_of_king,2005-08-01,2005-12-31,153,5.0,0.0,shock_matrix,E:\大三下\比赛\花旗杯\模型\data\csv_raw\geopolitical_shocks.csv
5
+ dep_of_dollar_20070101,dep_of_dollar,2007-01-01,2008-09-15,624,3.0,0.5,shock_matrix,E:\大三下\比赛\花旗杯\模型\data\csv_raw\geopolitical_shocks.csv
6
+ turkey_to_iraq_20071018,turkey_to_iraq,2007-10-18,2007-11-01,15,5.0,0.0,shock_matrix,E:\大三下\比赛\花旗杯\模型\data\csv_raw\geopolitical_shocks.csv
7
+ us_to_iran_20071025,us_to_iran,2007-10-25,2007-12-31,68,6.0,0.5,shock_matrix,E:\大三下\比赛\花旗杯\模型\data\csv_raw\geopolitical_shocks.csv
8
+ finance_crisis_20080916,finance_crisis,2008-09-16,2009-03-17,183,4.0,-0.8,shock_matrix,E:\大三下\比赛\花旗杯\模型\data\csv_raw\geopolitical_shocks.csv
9
+ QE1_20090318,QE1,2009-03-18,2010-03-31,379,3.0,0.5,shock_matrix,E:\大三下\比赛\花旗杯\模型\data\csv_raw\geopolitical_shocks.csv
10
+ debt_of_pigs_20100401,debt_of_pigs,2010-04-01,2010-11-03,217,5.0,0.0,shock_matrix,E:\大三下\比赛\花旗杯\模型\data\csv_raw\geopolitical_shocks.csv
11
+ QE2_20101104,QE2,2010-11-04,2010-12-31,58,1.0,0.2,shock_matrix,E:\大三下\比赛\花旗杯\模型\data\csv_raw\geopolitical_shocks.csv
12
+ arab_spring_20110101,arab_spring,2011-01-01,2011-10-20,293,6.0,0.5,shock_matrix,E:\大三下\比赛\花旗杯\模型\data\csv_raw\geopolitical_shocks.csv
13
+ decline_in_demand_20120101,decline_in_demand,2012-01-01,2012-12-31,366,5.0,-0.7,shock_matrix,E:\大三下\比赛\花旗杯\模型\data\csv_raw\geopolitical_shocks.csv
14
+ sit_in_iran_20120101,sit_in_iran,2012-01-01,2012-03-31,91,5.0,0.0,shock_matrix,E:\大三下\比赛\花旗杯\模型\data\csv_raw\geopolitical_shocks.csv
15
+ shale_oil_revolution_20130101,shale_oil_revolution,2013-01-01,2014-12-31,730,6.0,-1.0,shock_matrix,E:\大三下\比赛\花旗杯\模型\data\csv_raw\geopolitical_shocks.csv
16
+ sit_in_me_20130801,sit_in_me,2013-08-01,2013-08-31,31,5.0,0.0,shock_matrix,E:\大三下\比赛\花旗杯\模型\data\csv_raw\geopolitical_shocks.csv
17
+ isis_20140601,isis,2014-06-01,2014-06-30,30,4.5,0.3,shock_matrix,E:\大三下\比赛\花旗杯\模型\data\csv_raw\geopolitical_shocks.csv
18
+ opec_stay_20141127,opec_stay,2014-11-27,2014-12-31,35,5.0,-0.5,shock_matrix,E:\大三下\比赛\花旗杯\模型\data\csv_raw\geopolitical_shocks.csv
19
+ iran_nuclear_deal_20150714,iran_nuclear_deal,2015-07-14,2015-12-15,155,7.0,-0.6,shock_matrix,E:\大三下\比赛\花旗杯\模型\data\csv_raw\geopolitical_shocks.csv
20
+ FR_raise_ir_20151216,FR_raise_ir,2015-12-16,2015-12-31,16,2.0,0.5,shock_matrix,E:\大三下\比赛\花旗杯\模型\data\csv_raw\geopolitical_shocks.csv
21
+ reduce_in_oil_20161201,reduce_in_oil,2016-12-01,2017-07-01,213,5.0,0.0,shock_matrix,E:\大三下\比赛\花旗杯\模型\data\csv_raw\geopolitical_shocks.csv
22
+ us_withdral_deal_20180508,us_withdral_deal,2018-05-08,2018-11-05,182,5.0,0.8,shock_matrix,E:\大三下\比赛\花旗杯\模型\data\csv_raw\geopolitical_shocks.csv
23
+ covid_20200101,covid,2020-01-01,2022-02-24,786,10.0,-0.8,shock_matrix,E:\大三下\比赛\花旗杯\模型\data\csv_raw\geopolitical_shocks.csv
24
+ energy_crisis_20210701,energy_crisis,2021-07-01,2021-12-31,184,8.0,0.8,shock_matrix,E:\大三下\比赛\花旗杯\模型\data\csv_raw\geopolitical_shocks.csv
25
+ war_of_RU_20220224,war_of_RU,2022-02-24,2023-12-31,676,9.0,1.0,shock_matrix,E:\大三下\比赛\花旗杯\模型\data\csv_raw\geopolitical_shocks.csv
26
+ red_sea_crisis_20240116,red_sea_crisis,2024-01-16,2026-02-10,757,7.0,0.5,shock_matrix,E:\大三下\比赛\花旗杯\模型\data\csv_raw\geopolitical_shocks.csv
data/knowledge_base/oil_market_event_registry.csv ADDED
@@ -0,0 +1,26 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ event_date,event_name,event_type,impact_direction,severity,duration_days,affected_region,affected_industries,source_url,notes
2
+ 2005-01-01,pingjin,market_event,neutral,5.0,730,global,logistics|aviation,E:\大三下\比赛\花旗杯\模型\data\csv_raw\geopolitical_shocks.csv,generated_from=shock_matrix; end_date=2006-12-31 00:00:00
3
+ 2005-08-01,crisis_of_iran,geopolitical_conflict,up,7.0,334,middle_east,logistics|aviation|petrochemical,E:\大三下\比赛\花旗杯\模型\data\csv_raw\geopolitical_shocks.csv,generated_from=shock_matrix; end_date=2006-06-30 00:00:00
4
+ 2005-08-01,death_of_king,market_event,neutral,5.0,153,global,logistics|aviation,E:\大三下\比赛\花旗杯\模型\data\csv_raw\geopolitical_shocks.csv,generated_from=shock_matrix; end_date=2005-12-31 00:00:00
5
+ 2007-01-01,dep_of_dollar,market_event,up,3.0,624,global,logistics|aviation,E:\大三下\比赛\花旗杯\模型\data\csv_raw\geopolitical_shocks.csv,generated_from=shock_matrix; end_date=2008-09-15 00:00:00
6
+ 2007-10-18,turkey_to_iraq,market_event,neutral,5.0,15,global,logistics|aviation,E:\大三下\比赛\花旗杯\模型\data\csv_raw\geopolitical_shocks.csv,generated_from=shock_matrix; end_date=2007-11-01 00:00:00
7
+ 2007-10-25,us_to_iran,market_event,up,6.0,68,middle_east,logistics|aviation|petrochemical,E:\大三下\比赛\花旗杯\模型\data\csv_raw\geopolitical_shocks.csv,generated_from=shock_matrix; end_date=2007-12-31 00:00:00
8
+ 2008-09-16,finance_crisis,macro_financial,down,4.0,183,global,aviation|logistics|manufacturing,E:\大三下\比赛\花旗杯\模型\data\csv_raw\geopolitical_shocks.csv,generated_from=shock_matrix; end_date=2009-03-17 00:00:00
9
+ 2009-03-18,QE1,policy_event,up,3.0,379,global,logistics|aviation,E:\大三下\比赛\花旗杯\模型\data\csv_raw\geopolitical_shocks.csv,generated_from=shock_matrix; end_date=2010-03-31 00:00:00
10
+ 2010-04-01,debt_of_pigs,macro_demand_shock,neutral,5.0,217,europe,logistics|aviation,E:\大三下\比赛\花旗杯\模型\data\csv_raw\geopolitical_shocks.csv,generated_from=shock_matrix; end_date=2010-11-03 00:00:00
11
+ 2010-11-04,QE2,policy_event,up,1.0,58,global,logistics|aviation,E:\大三下\比赛\花旗杯\模型\data\csv_raw\geopolitical_shocks.csv,generated_from=shock_matrix; end_date=2010-12-31 00:00:00
12
+ 2011-01-01,arab_spring,market_event,up,6.0,293,middle_east,logistics|aviation,E:\大三下\比赛\花旗杯\模型\data\csv_raw\geopolitical_shocks.csv,generated_from=shock_matrix; end_date=2011-10-20 00:00:00
13
+ 2012-01-01,decline_in_demand,macro_demand_shock,down,5.0,366,global,logistics|aviation,E:\大三下\比赛\花旗杯\模型\data\csv_raw\geopolitical_shocks.csv,generated_from=shock_matrix; end_date=2012-12-31 00:00:00
14
+ 2012-01-01,sit_in_iran,market_event,neutral,5.0,91,middle_east,logistics|aviation|petrochemical,E:\大三下\比赛\花旗杯\模型\data\csv_raw\geopolitical_shocks.csv,generated_from=shock_matrix; end_date=2012-03-31 00:00:00
15
+ 2013-01-01,shale_oil_revolution,supply_expansion,down,6.0,730,us,energy_upstream|petrochemical,E:\大三下\比赛\花旗杯\模型\data\csv_raw\geopolitical_shocks.csv,generated_from=shock_matrix; end_date=2014-12-31 00:00:00
16
+ 2013-08-01,sit_in_me,market_event,neutral,5.0,31,global,logistics|aviation,E:\大三下\比赛\花旗杯\模型\data\csv_raw\geopolitical_shocks.csv,generated_from=shock_matrix; end_date=2013-08-31 00:00:00
17
+ 2014-06-01,isis,geopolitical_conflict,up,4.5,30,global,logistics|aviation,E:\大三下\比赛\花旗杯\模型\data\csv_raw\geopolitical_shocks.csv,generated_from=shock_matrix; end_date=2014-06-30 00:00:00
18
+ 2014-11-27,opec_stay,opec_policy,neutral,5.0,35,opec,energy_upstream|petrochemical,E:\大三下\比赛\花旗杯\模型\data\csv_raw\geopolitical_shocks.csv,generated_from=shock_matrix; end_date=2014-12-31 00:00:00
19
+ 2015-07-14,iran_nuclear_deal,policy_supply_release,down,7.0,155,middle_east,petrochemical|logistics,E:\大三下\比赛\花旗杯\模型\data\csv_raw\geopolitical_shocks.csv,generated_from=shock_matrix; end_date=2015-12-15 00:00:00
20
+ 2015-12-16,FR_raise_ir,market_event,up,2.0,16,global,logistics|aviation,E:\大三下\比赛\花旗杯\模型\data\csv_raw\geopolitical_shocks.csv,generated_from=shock_matrix; end_date=2015-12-31 00:00:00
21
+ 2016-12-01,reduce_in_oil,supply_event,neutral,5.0,213,global,logistics|aviation,E:\大三下\比赛\花旗杯\模型\data\csv_raw\geopolitical_shocks.csv,generated_from=shock_matrix; end_date=2017-07-01 00:00:00
22
+ 2018-05-08,us_withdral_deal,sanction_policy,up,5.0,182,middle_east,petrochemical|logistics|aviation,E:\大三下\比赛\花旗杯\模型\data\csv_raw\geopolitical_shocks.csv,generated_from=shock_matrix; end_date=2018-11-05 00:00:00
23
+ 2020-01-01,covid,demand_shock,down,10.0,786,global,aviation|logistics|petrochemical|manufacturing,E:\大三下\比赛\花旗杯\模型\data\csv_raw\geopolitical_shocks.csv,generated_from=shock_matrix; end_date=2022-02-24 00:00:00
24
+ 2021-07-01,energy_crisis,energy_supply_shock,up,8.0,184,europe|global,petrochemical|manufacturing|logistics,E:\大三下\比赛\花旗杯\模型\data\csv_raw\geopolitical_shocks.csv,generated_from=shock_matrix; end_date=2021-12-31 00:00:00
25
+ 2022-02-24,war_of_RU,geopolitical_conflict,up,9.0,676,europe|global,aviation|logistics|petrochemical|manufacturing,E:\大三下\比赛\花旗杯\模型\data\csv_raw\geopolitical_shocks.csv,generated_from=shock_matrix; end_date=2023-12-31 00:00:00
26
+ 2024-01-16,red_sea_crisis,shipping_disruption,up,7.0,757,middle_east|global,logistics|aviation|manufacturing,E:\大三下\比赛\花旗杯\模型\data\csv_raw\geopolitical_shocks.csv,generated_from=shock_matrix; end_date=2026-02-10 00:00:00
data/knowledge_base/opec_momr_manual_revisions.csv ADDED
@@ -0,0 +1 @@
 
 
1
+ report_date,target_period,metric_name,revision_direction,revision_value,notes,source_url
data/live/china_monthly.csv ADDED
@@ -0,0 +1,668 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ date,china_cpi_yoy,china_industrial_va_yoy,china_ppi_industry_yoy,china_pmi_mfg,china_pmi_non_mfg,china_m2,china_m1
2
+ 1990-03-01,,5.0,,,,,
3
+ 1990-04-01,,0.8,,,,,
4
+ 1990-05-01,,1.7,,,,,
5
+ 1990-06-01,,3.3,,,,,
6
+ 1990-07-01,,5.0,,,,,
7
+ 1990-08-01,,2.5,,,,,
8
+ 1990-09-01,,4.2,,,,,
9
+ 1990-10-01,,6.7,,,,,
10
+ 1990-11-01,,10.9,,,,,
11
+ 1990-12-01,,12.6,,,,,
12
+ 1991-01-01,,12.6,,,,,
13
+ 1991-02-01,,23.5,,,,,
14
+ 1991-03-01,,9.2,,,,,
15
+ 1991-04-01,,10.9,,,,,
16
+ 1991-05-01,,10.9,,,,,
17
+ 1991-06-01,,10.9,,,,,
18
+ 1991-07-01,,9.2,,,,,
19
+ 1991-08-01,,10.9,,,,,
20
+ 1991-09-01,,11.8,,,,,
21
+ 1991-10-01,,12.6,,,,,
22
+ 1991-11-01,,11.8,,,,,
23
+ 1991-12-01,,7.6,,,,,
24
+ 1992-01-01,,5.0,,,,,
25
+ 1992-02-01,,10.9,,,,,
26
+ 1992-03-01,,18.5,,,,,
27
+ 1992-04-01,,16.8,,,,,
28
+ 1992-05-01,,15.1,,,,,
29
+ 1992-06-01,,14.3,,,,,
30
+ 1992-07-01,,16.8,,,,,
31
+ 1992-08-01,,19.3,,,,,
32
+ 1992-09-01,,17.6,,,,,
33
+ 1992-10-01,,17.6,,,,,
34
+ 1992-11-01,,18.5,,,,,
35
+ 1992-12-01,,21.8,,,,,
36
+ 1993-01-01,,26.9,,,,,
37
+ 1993-02-01,,8.4,,,,,
38
+ 1993-03-01,,27.7,,,,,
39
+ 1993-04-01,,21.8,,,,,
40
+ 1993-05-01,,21.0,,,,,
41
+ 1993-06-01,,22.7,,,,,
42
+ 1993-07-01,,25.2,,,,,
43
+ 1993-08-01,,21.0,,,,,
44
+ 1993-09-01,,19.3,,,,,
45
+ 1993-10-01,,16.0,,,,,
46
+ 1993-11-01,,13.4,,,,,
47
+ 1993-12-01,,16.0,,,,,
48
+ 1994-01-01,,25.2,,,,,
49
+ 1994-02-01,,27.7,,,,,
50
+ 1994-03-01,,3.4,,,,,
51
+ 1994-04-01,,16.0,,,,,
52
+ 1994-05-01,,16.8,,,,,
53
+ 1994-06-01,,17.6,,,,,
54
+ 1994-07-01,,15.1,,,,,
55
+ 1994-08-01,,15.1,,,,,
56
+ 1994-09-01,,29.4,,,,,
57
+ 1994-10-01,,21.8,,,,,
58
+ 1994-11-01,,24.4,,,,,
59
+ 1994-12-01,,23.5,,,,,
60
+ 1995-01-01,,18.5,,,,,
61
+ 1995-02-01,,11.4,,,,,
62
+ 1995-03-01,,15.5,,,,,
63
+ 1995-04-01,,16.4,,,,,
64
+ 1995-05-01,,15.4,,,,,
65
+ 1995-06-01,,13.1,,,,,
66
+ 1995-07-01,,13.9,,,,,
67
+ 1995-08-01,,13.6,,,,,
68
+ 1995-09-01,,11.8,,,,,
69
+ 1995-10-01,,11.4,,,,,
70
+ 1995-11-01,,12.9,,,,,
71
+ 1995-12-01,,12.1,,,,,
72
+ 1996-01-01,,14.9,,,,,
73
+ 1996-02-01,2.1,16.9,,,,,
74
+ 1996-03-01,2.3,12.2,,,,,
75
+ 1996-04-01,0.6,12.2,,,,,
76
+ 1996-05-01,0.7,13.7,,,,,
77
+ 1996-06-01,-0.5,13.1,,,,,
78
+ 1996-07-01,-1.6,13.8,,,,,
79
+ 1996-08-01,-0.8,12.2,,,,,
80
+ 1996-09-01,1.5,10.6,,,,,
81
+ 1996-10-01,1.5,13.7,,,,,
82
+ 1996-11-01,-0.2,13.3,,,,,
83
+ 1996-12-01,-0.1,13.4,,,,,
84
+ 1997-01-01,0.7,14.0,,,,,
85
+ 1997-02-01,1.1,10.3,,,,,
86
+ 1997-03-01,2.0,10.4,,,,,
87
+ 1997-04-01,-1.1,13.5,,,,,
88
+ 1997-05-01,-0.2,11.9,,,,,
89
+ 1997-06-01,-0.9,11.9,,,,,
90
+ 1997-07-01,-1.7,12.1,,,,,
91
+ 1997-08-01,-1.2,8.4,,,,,
92
+ 1997-09-01,0.6,10.9,,,,,
93
+ 1997-10-01,1.7,11.1,,,,,
94
+ 1997-11-01,-0.6,11.8,,,,,
95
+ 1997-12-01,-0.3,11.6,,,,,
96
+ 1998-01-01,0.1,9.2,,,,,
97
+ 1998-02-01,0.7,1.8,,,,,
98
+ 1998-03-01,1.5,9.5,,,,,
99
+ 1998-04-01,-0.5,9.0,,,,,
100
+ 1998-05-01,-0.8,7.2,,,,,
101
+ 1998-06-01,-1.4,8.0,,,,,
102
+ 1998-07-01,-1.8,7.9,,,,,
103
+ 1998-08-01,-1.3,7.6,,,,,
104
+ 1998-09-01,0.8,7.9,,,,,
105
+ 1998-10-01,1.6,10.2,,,,,
106
+ 1998-11-01,-0.3,10.6,,,,,
107
+ 1998-12-01,-0.3,11.0,,,,,
108
+ 1999-01-01,0.2,11.5,,,,,
109
+ 1999-02-01,0.2,17.9,,,,,
110
+ 1999-03-01,1.3,2.1,,,,,
111
+ 1999-04-01,-0.8,9.0,,,,,
112
+ 1999-05-01,-1.0,9.1,,,,,
113
+ 1999-06-01,-1.3,8.9,,,,,
114
+ 1999-07-01,-1.8,9.1,,,,,
115
+ 1999-08-01,-0.9,9.3,,,,,
116
+ 1999-09-01,1.0,9.5,,,,,
117
+ 1999-10-01,2.0,8.2,,,,,
118
+ 1999-11-01,0.0,7.0,,,,,
119
+ 1999-12-01,-0.6,7.6,,,,,
120
+ 2000-01-01,0.0,7.4,,,,,
121
+ 2000-02-01,0.9,8.9,,,,,
122
+ 2000-03-01,1.9,12.0,,,,,
123
+ 2000-04-01,-1.6,11.9,,,,,
124
+ 2000-05-01,-0.9,11.4,,,,,
125
+ 2000-06-01,-1.0,11.5,,,,,
126
+ 2000-07-01,-1.5,12.2,,,,,
127
+ 2000-08-01,-0.8,12.8,,,,,
128
+ 2000-09-01,1.0,12.8,,,,,
129
+ 2000-10-01,1.6,12.0,,,,,
130
+ 2000-11-01,-0.1,11.4,,,,,
131
+ 2000-12-01,0.7,10.6,,,,,
132
+ 2001-01-01,0.1,10.4,,,,,
133
+ 2001-02-01,0.9,2.3,,,,,
134
+ 2001-03-01,0.1,19.0,,,,,
135
+ 2001-04-01,-0.6,12.1,,,,,
136
+ 2001-05-01,0.2,11.5,,,,,
137
+ 2001-06-01,-0.5,10.2,,,,,
138
+ 2001-07-01,-1.2,10.1,,,,,
139
+ 2001-08-01,-0.5,8.1,,,,,
140
+ 2001-09-01,0.1,8.1,,,,,
141
+ 2001-10-01,0.9,9.5,,,,,
142
+ 2001-11-01,0.3,8.8,,,,,
143
+ 2001-12-01,-0.2,7.9,,,,,
144
+ 2002-01-01,0.1,8.7,,,,,
145
+ 2002-02-01,0.3,18.6,,,,,
146
+ 2002-03-01,1.1,2.7,,,,,
147
+ 2002-04-01,-1.3,10.9,,,,,
148
+ 2002-05-01,-0.3,12.1,,,,,
149
+ 2002-06-01,-0.3,12.9,,,,,
150
+ 2002-07-01,-0.9,12.4,,,,,
151
+ 2002-08-01,-0.7,12.8,,,,,
152
+ 2002-09-01,0.3,12.7,,,,,
153
+ 2002-10-01,1.0,13.8,,,,,
154
+ 2002-11-01,0.2,14.2,,,,,
155
+ 2002-12-01,-0.1,14.5,,,,,
156
+ 2003-01-01,0.3,14.9,,,,,
157
+ 2003-02-01,1.1,14.8,,,,,
158
+ 2003-03-01,0.9,19.8,,,,,
159
+ 2003-04-01,-0.6,16.9,,,,,
160
+ 2003-05-01,-0.2,14.9,,,,,
161
+ 2003-06-01,-0.7,13.7,,,,,
162
+ 2003-07-01,-1.2,16.9,,,,,
163
+ 2003-08-01,-0.5,16.5,,,,,
164
+ 2003-09-01,0.7,17.1,,,,,
165
+ 2003-10-01,1.2,16.3,,,,,
166
+ 2003-11-01,0.9,17.2,,,,,
167
+ 2003-12-01,1.0,17.9,,,,,
168
+ 2004-01-01,0.6,18.1,,,,,
169
+ 2004-02-01,1.1,7.2,,,,,
170
+ 2004-03-01,-0.2,23.2,,,,,
171
+ 2004-04-01,0.3,19.4,,,,,
172
+ 2004-05-01,0.5,19.1,,,,,
173
+ 2004-06-01,-0.1,17.5,,,,,
174
+ 2004-07-01,-0.7,16.2,,,,,
175
+ 2004-08-01,-0.2,15.5,,,,,
176
+ 2004-09-01,0.7,15.9,,,,,
177
+ 2004-10-01,1.1,16.1,,,,,
178
+ 2004-11-01,0.0,15.7,,,,,
179
+ 2004-12-01,-0.3,14.8,,,,,
180
+ 2005-01-01,0.1,14.4,,,,,
181
+ 2005-02-01,0.6,20.9,,,,,
182
+ 2005-03-01,1.8,7.6,,,,,
183
+ 2005-04-01,-0.9,15.1,,,,,
184
+ 2005-05-01,-0.3,16.0,,,,,
185
+ 2005-06-01,-0.2,16.6,,,,,
186
+ 2005-07-01,-0.8,16.8,,,,,
187
+ 2005-08-01,0.0,16.1,,,,,
188
+ 2005-09-01,0.2,16.0,,,,,
189
+ 2005-10-01,0.7,16.5,,,,,
190
+ 2005-11-01,0.4,16.1,,,,,
191
+ 2005-12-01,-0.3,16.6,,,,,
192
+ 2006-01-01,,,3.05,,,,
193
+ 2006-01-01,0.4,16.5,,,,,
194
+ 2006-02-01,,,3.01,,,,
195
+ 2006-02-01,1.3,,,,,,
196
+ 2006-03-01,,,2.49,,,,
197
+ 2006-03-01,0.5,20.1,,,,,
198
+ 2006-04-01,,,1.87,,,,
199
+ 2006-04-01,-0.9,17.8,,,,,
200
+ 2006-05-01,,,2.43,,,,
201
+ 2006-05-01,0.2,16.6,,,,,
202
+ 2006-06-01,,,3.52,,,,
203
+ 2006-06-01,-0.1,17.9,,,,,
204
+ 2006-07-01,,,3.58,,,,
205
+ 2006-07-01,-0.5,19.5,,,,,
206
+ 2006-08-01,,,3.4,,,,
207
+ 2006-08-01,-0.3,16.7,,,,,
208
+ 2006-09-01,,,3.45,,,,
209
+ 2006-09-01,0.3,15.7,,,,,
210
+ 2006-10-01,,,2.9,,,,
211
+ 2006-10-01,0.5,16.1,,,,,
212
+ 2006-11-01,,,2.78,,,,
213
+ 2006-11-01,0.1,14.7,,,,,
214
+ 2006-12-01,,,3.05,,,,
215
+ 2006-12-01,0.3,14.9,,,,,
216
+ 2007-01-01,,,3.3,,,,
217
+ 2007-01-01,1.4,14.7,,,,,
218
+ 2007-02-01,,,2.6,,,,
219
+ 2007-02-01,0.7,,,,,,
220
+ 2007-03-01,,,2.65,,,,
221
+ 2007-03-01,1.0,12.6,,,,,
222
+ 2007-04-01,,,2.87,,,,
223
+ 2007-04-01,-0.3,17.6,,,,,
224
+ 2007-05-01,,,2.76,,,,
225
+ 2007-05-01,-0.1,17.4,,,,,
226
+ 2007-06-01,,,2.49,,,,
227
+ 2007-06-01,0.3,18.1,,,,,
228
+ 2007-07-01,,,2.39,,,,
229
+ 2007-07-01,0.4,19.4,,,,,
230
+ 2007-08-01,,,2.56,,,,
231
+ 2007-08-01,0.9,18.0,,,,,
232
+ 2007-09-01,,,2.71,,,,
233
+ 2007-09-01,1.2,17.5,,,,,
234
+ 2007-10-01,,,3.21,,,,
235
+ 2007-10-01,0.3,18.9,,,,,
236
+ 2007-11-01,,,4.55,,,,
237
+ 2007-11-01,0.3,17.9,,,,,
238
+ 2007-12-01,,,5.43,,,,
239
+ 2007-12-01,0.7,17.3,,,,,
240
+ 2008-01-01,,,6.07,53.0,60.2,417846.17,154872.59
241
+ 2008-01-01,1.0,17.4,,,,,
242
+ 2008-02-01,,,6.62,53.4,59.3,421037.84,150177.88
243
+ 2008-02-01,1.2,,,,,,
244
+ 2008-03-01,,,7.95,58.4,58.9,423054.53,150867.47
245
+ 2008-03-01,2.6,15.4,,,,,
246
+ 2008-04-01,,,8.12,59.2,58.4,429313.72,151694.91
247
+ 2008-04-01,-0.7,17.8,,,,,
248
+ 2008-05-01,,,8.22,53.3,57.4,436221.6,153344.75
249
+ 2008-05-01,0.1,15.7,,,,,
250
+ 2008-06-01,,,8.84,52.0,57.4,443141.02,154820.15
251
+ 2008-06-01,-0.4,16.0,,,,,
252
+ 2008-07-01,,,10.03,48.4,55.7,446362.17,154992.44
253
+ 2008-07-01,-0.2,16.0,,,,,
254
+ 2008-08-01,,,10.06,48.4,52.9,448846.68,156889.92
255
+ 2008-08-01,0.1,14.7,,,,,
256
+ 2008-09-01,,,9.13,51.2,55.0,452898.71,155748.97
257
+ 2008-09-01,-0.1,12.8,,,,,
258
+ 2008-10-01,,,6.59,44.6,53.1,453133.32,157194.36
259
+ 2008-10-01,0.0,11.4,,,,,
260
+ 2008-11-01,,,1.99,38.8,51.2,458644.66,157826.63
261
+ 2008-11-01,-0.3,8.2,,,,,
262
+ 2008-12-01,,,-1.14,41.2,50.8,475166.6,166217.13
263
+ 2008-12-01,-0.8,5.4,,,,,
264
+ 2009-01-01,,,-3.35,45.3,53.7,496135.3078,165214.3413
265
+ 2009-01-01,-0.2,5.7,,,,,
266
+ 2009-02-01,,,-4.47,49.0,55.1,506708.07,166149.6012
267
+ 2009-02-01,0.9,,,,,,
268
+ 2009-03-01,,,-5.99,52.4,54.4,530626.7118,176541.1313
269
+ 2009-03-01,0.0,11.0,,,,,
270
+ 2009-04-01,,,-6.6,53.5,53.5,540481.2137,178213.5683
271
+ 2009-04-01,-0.3,8.3,,,,,
272
+ 2009-05-01,,,-7.2,53.1,54.9,548263.51,182025.58
273
+ 2009-05-01,-0.2,7.3,,,,,
274
+ 2009-06-01,,,-7.8,53.2,55.4,568916.2,193138.15
275
+ 2009-06-01,-0.3,8.9,,,,,
276
+ 2009-07-01,,,-8.22,53.3,57.3,573102.8517,195889.27
277
+ 2009-07-01,-0.5,10.7,,,,,
278
+ 2009-08-01,,,-7.86,54.0,57.3,576698.9535,200394.8261
279
+ 2009-08-01,0.0,10.8,,,,,
280
+ 2009-09-01,,,-6.99,54.3,57.9,585405.3373,201708.1398
281
+ 2009-09-01,0.5,12.3,,,,,
282
+ 2009-10-01,,,-5.85,55.2,59.5,586643.2887,207545.7431
283
+ 2009-10-01,0.4,13.9,,,,,
284
+ 2009-11-01,,,-2.08,55.2,58.4,594604.7213,212493.2037
285
+ 2009-11-01,-0.1,16.1,,,,,
286
+ 2009-12-01,,,1.7,56.6,58.8,610224.5231,221445.8057
287
+ 2009-12-01,0.3,19.2,,,,,
288
+ 2010-01-01,,,4.32,55.8,58.1,625609.29,229588.98
289
+ 2010-01-01,1.0,18.5,,,,,
290
+ 2010-02-01,,,5.39,52.0,57.0,636072.2646,224286.9544
291
+ 2010-02-01,0.6,,,,,,
292
+ 2010-03-01,,,5.91,55.1,57.3,649947.4643,229397.9332
293
+ 2010-03-01,1.2,12.8,,,,,
294
+ 2010-04-01,,,6.81,55.7,57.8,656561.217,233909.7597
295
+ 2010-04-01,-0.7,18.1,,,,,
296
+ 2010-05-01,,,7.13,53.9,58.1,663351.37,236497.8831
297
+ 2010-05-01,0.2,17.8,,,,,
298
+ 2010-06-01,,,6.41,52.1,58.8,673921.7239,240579.9975
299
+ 2010-06-01,-0.1,16.5,,,,,
300
+ 2010-07-01,,,4.84,51.2,57.1,674051.4789,240664.0696
301
+ 2010-07-01,-0.6,13.7,,,,,
302
+ 2010-08-01,,,4.32,51.7,58.0,687506.9183,244340.6421
303
+ 2010-08-01,0.4,13.4,,,,,
304
+ 2010-09-01,,,4.33,53.8,57.9,696471.5,243821.9
305
+ 2010-09-01,0.6,13.9,,,,,
306
+ 2010-10-01,,,5.04,54.7,57.4,699776.7409,253313.1693
307
+ 2010-10-01,0.6,13.3,,,,,
308
+ 2010-11-01,,,6.06,55.2,58.9,710339.025,259420.32
309
+ 2010-11-01,0.7,13.1,,,,,
310
+ 2010-12-01,,,5.93,53.9,58.8,725851.79,266621.54
311
+ 2010-12-01,1.1,13.3,,,,,
312
+ 2011-01-01,,,6.6436,52.9,57.2,733884.8297,261765.006
313
+ 2011-01-01,0.5,13.5,,,,,
314
+ 2011-02-01,,,7.2322,52.2,57.0,736130.8633,259200.4996
315
+ 2011-02-01,1.0,,,,,,
316
+ 2011-03-01,,,7.3081,53.4,59.2,758130.88,266255.48
317
+ 2011-03-01,1.2,14.1,,,,,
318
+ 2011-04-01,,,6.821,52.9,58.2,757384.5619,266766.9145
319
+ 2011-04-01,-0.2,14.8,,,,,
320
+ 2011-05-01,,,6.7851,52.0,58.7,763409.2151,269289.6255
321
+ 2011-05-01,0.1,13.4,,,,,
322
+ 2011-06-01,,,7.1209,50.9,56.6,780820.85,274662.57
323
+ 2011-06-01,0.1,13.3,,,,,
324
+ 2011-07-01,,,7.5417,50.7,57.3,772923.65,270545.65
325
+ 2011-07-01,0.3,15.1,,,,,
326
+ 2011-08-01,,,7.2528,50.9,57.1,780852.3021,273393.7738
327
+ 2011-08-01,0.5,14.0,,,,,
328
+ 2011-09-01,,,6.5227,51.2,55.8,787406.2038,267193.1613
329
+ 2011-09-01,0.3,13.5,,,,,
330
+ 2011-10-01,,,5.0038,50.4,55.5,816829.2489,276552.6711
331
+ 2011-10-01,0.5,13.8,,,,,
332
+ 2011-11-01,,,2.7179,49.0,55.9,825493.9445,281416.3725
333
+ 2011-11-01,0.1,13.2,,,,,
334
+ 2011-12-01,,,1.6854,50.3,56.3,851590.9,289847.697
335
+ 2011-12-01,-0.2,12.4,,,,,
336
+ 2012-01-01,,,0.7347,50.5,55.7,855898.89,270010.4
337
+ 2012-01-01,0.3,12.8,,,,,
338
+ 2012-02-01,,,0.0284,51.0,57.3,867171.42,270312.11
339
+ 2012-02-01,1.5,,,,,,
340
+ 2012-03-01,,,-0.3171,53.1,58.0,895565.5,277998.11
341
+ 2012-03-01,-0.1,11.4,,,,,
342
+ 2012-04-01,,,-0.6984,53.3,56.1,889604.04,274983.82
343
+ 2012-04-01,0.2,11.9,,,,,
344
+ 2012-05-01,,,-1.3981,50.4,55.2,900048.77,278656.31
345
+ 2012-05-01,-0.1,9.3,,,,,
346
+ 2012-06-01,,,-2.0843,50.2,56.7,924991.2,287526.17
347
+ 2012-06-01,-0.3,9.6,,,,,
348
+ 2012-07-01,,,-2.8651,50.1,55.6,919072.4019,283090.6809
349
+ 2012-07-01,-0.6,9.5,,,,,
350
+ 2012-08-01,,,-3.4784,49.2,56.3,924894.5865,285739.2653
351
+ 2012-08-01,0.1,9.2,,,,,
352
+ 2012-09-01,,,-3.5545,49.8,53.7,943688.7534,286788.2061
353
+ 2012-09-01,0.6,8.9,,,,,
354
+ 2012-10-01,,,-2.7558,50.2,55.5,936404.2792,293309.7849
355
+ 2012-10-01,0.3,9.2,,,,,
356
+ 2012-11-01,,,-2.1995,50.6,55.6,944832.4,296883.0
357
+ 2012-11-01,-0.1,9.6,,,,,
358
+ 2012-12-01,,,-1.9397,50.6,56.1,974148.8,308664.23
359
+ 2012-12-01,0.1,10.1,,,,,
360
+ 2013-01-01,,,-1.6372,50.4,56.2,992129.25,311228.55
361
+ 2013-01-01,0.8,10.3,,,,,
362
+ 2013-02-01,,,-1.6254,50.1,54.5,998600.83,296103.24
363
+ 2013-02-01,1.0,,,,,,
364
+ 2013-03-01,,,-1.919,50.9,55.6,1035858.37,310898.29
365
+ 2013-03-01,1.1,9.9,,,,,
366
+ 2013-04-01,,,-2.6175,50.6,54.5,1032551.903,307648.4202
367
+ 2013-04-01,-0.9,8.9,,,,,
368
+ 2013-05-01,,,-2.8658,50.8,54.3,1042169.16,310204.48
369
+ 2013-05-01,0.2,9.3,,,,,
370
+ 2013-06-01,,,-2.6965,50.1,53.9,1054403.69,313499.82
371
+ 2013-06-01,-0.6,9.2,,,,,
372
+ 2013-07-01,,,-2.2712,50.3,54.1,1052212.34,310596.46
373
+ 2013-07-01,0.0,8.9,,,,,
374
+ 2013-08-01,,,-1.625,51.0,53.9,1061256.43,314085.91
375
+ 2013-08-01,0.1,9.7,,,,,
376
+ 2013-09-01,,,-1.3439,51.1,55.4,1077379.163,312330.3433
377
+ 2013-09-01,0.5,10.4,,,,,
378
+ 2013-10-01,,,-1.5071,51.4,56.3,1070242.167,319509.38
379
+ 2013-10-01,0.8,10.2,,,,,
380
+ 2013-11-01,,,-1.4242,51.4,56.0,1079257.055,324821.9228
381
+ 2013-11-01,0.1,10.3,,,,,
382
+ 2013-12-01,,,-1.3557,51.0,54.6,1106524.98,337291.05
383
+ 2013-12-01,-0.1,10.0,,,,,
384
+ 2014-01-01,,,-1.6394,50.5,53.4,1123521.21,314900.5525
385
+ 2014-01-01,0.3,9.7,,,,,
386
+ 2014-02-01,,,-2.0182,50.2,55.0,1131760.83,316625.11
387
+ 2014-02-01,1.0,,,,,,
388
+ 2014-03-01,,,-2.3022,50.3,54.5,1160687.38,327683.74
389
+ 2014-03-01,0.5,8.6,,,,,
390
+ 2014-04-01,,,-2.0042,50.4,54.8,1168812.67,324482.52
391
+ 2014-04-01,-0.5,8.8,,,,,
392
+ 2014-05-01,,,-1.4464,50.8,55.5,1182293.96,327839.56
393
+ 2014-05-01,-0.3,8.7,,,,,
394
+ 2014-06-01,,,-1.1086,51.0,55.0,1209587.2,341487.45
395
+ 2014-06-01,0.1,8.8,,,,,
396
+ 2014-07-01,,,-0.8688,51.7,54.2,1194249.24,331347.32
397
+ 2014-07-01,-0.1,9.2,,,,,
398
+ 2014-08-01,,,-1.2038,51.1,54.4,1197499.08,332023.23
399
+ 2014-08-01,0.1,9.0,,,,,
400
+ 2014-09-01,,,-1.7996,51.1,54.0,1202051.41,327220.21
401
+ 2014-09-01,0.2,6.9,,,,,
402
+ 2014-10-01,,,-2.2428,50.8,53.8,1199236.314,329617.7321
403
+ 2014-10-01,0.5,8.0,,,,,
404
+ 2014-11-01,,,-2.6928,50.3,53.9,1208605.95,335114.13
405
+ 2014-11-01,0.0,7.7,,,,,
406
+ 2014-12-01,,,-3.3152,50.1,54.1,1228374.807,348056.4089
407
+ 2014-12-01,-0.2,7.2,,,,,
408
+ 2015-01-01,,,-4.3202,49.8,53.7,1242710.2185386,348109.50224619
409
+ 2015-01-01,0.3,7.9,,,,,
410
+ 2015-02-01,,,-4.7976,49.9,53.9,1257380.4784755,334439.22267292
411
+ 2015-02-01,0.3,,,,,,
412
+ 2015-03-01,,,-4.5603,50.1,53.7,1275332.78,337210.52
413
+ 2015-03-01,1.2,6.8,,,,,
414
+ 2015-04-01,,,-4.5725,50.1,53.4,1280779.14,336388.24
415
+ 2015-04-01,-0.5,5.6,,,,,
416
+ 2015-05-01,,,-4.607,50.2,53.2,1307357.63,343085.86
417
+ 2015-05-01,-0.2,5.9,,,,,
418
+ 2015-06-01,,,-4.8135,50.2,53.8,1333375.36453853,356082.85545863
419
+ 2015-06-01,-0.2,6.1,,,,,
420
+ 2015-07-01,,,-5.3692,50.0,53.9,1353210.92482599,353122.19382944
421
+ 2015-07-01,0.0,6.8,,,,,
422
+ 2015-08-01,,,-5.9227,49.7,53.4,1356907.98,362793.73
423
+ 2015-08-01,0.3,6.0,,,,,
424
+ 2015-09-01,,,-5.945,49.8,53.4,1359824.06,364416.9
425
+ 2015-09-01,0.5,6.1,,,,,
426
+ 2015-10-01,,,-5.9,49.8,53.1,1361020.70462698,375806.44967709
427
+ 2015-10-01,0.1,5.7,,,,,
428
+ 2015-11-01,,,-5.9,49.6,53.6,1373956.01,387618.32
429
+ 2015-11-01,-0.3,5.6,,,,,
430
+ 2015-12-01,,,-5.9,49.7,54.4,1392278.10919881,400953.4400483
431
+ 2015-12-01,0.0,6.2,,,,,
432
+ 2016-01-01,,,-5.3,49.4,53.5,1416319.55,412685.64
433
+ 2016-01-01,0.5,5.9,,,,,
434
+ 2016-02-01,,,-4.9,49.0,52.7,1424618.67792204,392504.69634977
435
+ 2016-02-01,0.5,,,,,,
436
+ 2016-03-01,,,-4.3,50.2,53.8,1446198.03,411581.31
437
+ 2016-03-01,1.6,5.4,,,,,
438
+ 2016-04-01,,,-3.4,50.1,53.5,1445209.59,413504.84
439
+ 2016-04-01,-0.4,6.8,,,,,
440
+ 2016-05-01,,,-2.8,50.1,53.1,1461695.11,424250.7
441
+ 2016-05-01,-0.2,6.0,,,,,
442
+ 2016-06-01,,,-2.6,50.0,53.7,1490491.83,443643.7
443
+ 2016-06-01,-0.5,6.0,,,,,
444
+ 2016-07-01,,,-1.7,49.9,53.9,1491558.72,442934.43
445
+ 2016-07-01,-0.1,6.2,,,,,
446
+ 2016-08-01,,,-0.8,50.4,53.5,1510982.91,454543.6
447
+ 2016-08-01,0.2,6.0,,,,,
448
+ 2016-09-01,,,0.1,50.4,53.7,1516360.5,454340.25
449
+ 2016-09-01,0.1,6.3,,,,,
450
+ 2016-10-01,,,1.2,51.2,54.0,1519485.4,465446.65
451
+ 2016-10-01,0.7,6.1,,,,,
452
+ 2016-11-01,,,3.3,51.7,54.7,1530432.06,475405.54
453
+ 2016-11-01,-0.1,6.1,,,,,
454
+ 2016-12-01,,,5.5,51.4,54.5,1550066.66781086,486557.23737089
455
+ 2016-12-01,0.1,6.2,,,,,
456
+ 2017-01-01,,,6.9,51.3,54.6,1584194.56383135,472526.45
457
+ 2017-01-01,0.2,6.0,,,,,
458
+ 2017-02-01,,,7.8,51.6,54.2,1589856.99535048,476527.6
459
+ 2017-02-01,1.0,,,,,,
460
+ 2017-03-01,,,7.6,51.8,55.1,1607938.98002212,488770.09
461
+ 2017-03-01,-0.2,6.3,,,,,
462
+ 2017-04-01,,,6.4,51.2,54.0,1603918.84024284,490180.41972742
463
+ 2017-04-01,-0.3,7.6,,,,,
464
+ 2017-05-01,,,5.5,51.2,54.5,1609740.77375527,496389.78217316
465
+ 2017-05-01,0.1,6.5,,,,,
466
+ 2017-06-01,,,5.5,51.7,54.9,1639497.04513491,510228.16597674
467
+ 2017-06-01,-0.1,6.5,,,,,
468
+ 2017-07-01,,,5.5,51.4,54.5,1636341.10524859,510484.57751922
469
+ 2017-07-01,-0.2,7.6,,,,,
470
+ 2017-08-01,,,6.3,51.7,53.4,1652947.30031106,518113.92979868
471
+ 2017-08-01,0.1,6.4,,,,,
472
+ 2017-09-01,,,6.9,52.4,55.4,1663666.05438742,517863.03732941
473
+ 2017-09-01,0.4,6.0,,,,,
474
+ 2017-10-01,,,6.9,51.6,54.3,1662449.96019881,525977.19041969
475
+ 2017-10-01,0.5,6.6,,,,,
476
+ 2017-11-01,,,5.8,51.8,54.8,1679156.63613009,535565.04954123
477
+ 2017-11-01,0.1,6.2,,,,,
478
+ 2017-12-01,,,4.9,51.6,55.0,1690235.31468079,543790.14519118
479
+ 2017-12-01,0.0,6.1,,,,,
480
+ 2018-01-01,,,4.3,51.3,55.3,1720814.46207142,543247.12570164
481
+ 2018-01-01,0.3,6.2,,,,,
482
+ 2018-02-01,,,3.7,50.3,54.4,1729070.11807809,517035.99284148
483
+ 2018-02-01,0.6,,,,,,
484
+ 2018-03-01,,,3.1,51.5,54.6,1739859.47770953,523540.0745583
485
+ 2018-03-01,1.2,7.2,,,,,
486
+ 2018-04-01,,,3.4,51.4,54.8,1737683.72947489,525447.77033558
487
+ 2018-04-01,-1.1,6.0,,,,,
488
+ 2018-05-01,,,4.1,51.9,54.9,1743063.7923233,526276.71554375
489
+ 2018-05-01,-0.2,7.0,,,,,
490
+ 2018-06-01,,,4.7,51.5,55.0,1770178.373,543944.71230776
491
+ 2018-06-01,-0.2,6.8,,,,,
492
+ 2018-07-01,,,4.6,51.2,54.0,1776196.10516409,536624.29388092
493
+ 2018-07-01,-0.1,6.0,,,,,
494
+ 2018-08-01,,,4.1,51.3,54.2,1788670.42970175,538324.64434997
495
+ 2018-08-01,0.3,6.0,,,,,
496
+ 2018-09-01,,,3.6,50.8,54.9,1801665.58145761,538574.08246877
497
+ 2018-09-01,0.7,6.1,,,,,
498
+ 2018-10-01,,,3.3,50.2,53.9,1795561.59556379,540128.36546464
499
+ 2018-10-01,0.7,5.8,,,,,
500
+ 2018-11-01,,,2.7,50.0,53.4,1813175.06539151,543498.66093155
501
+ 2018-11-01,0.2,5.9,,,,,
502
+ 2018-12-01,,,0.9,49.4,53.8,1826744.21571345,551685.90754868
503
+ 2018-12-01,-0.3,5.4,,,,,
504
+ 2019-01-01,,,0.1,49.5,54.7,1865935.33,545638.46
505
+ 2019-01-01,0.0,5.7,,,,,
506
+ 2019-02-01,,,0.1,49.2,54.3,1867427.45,527190.48
507
+ 2019-02-01,0.5,,,,,,
508
+ 2019-03-01,,,0.4,50.5,54.8,1889412.14,547575.54
509
+ 2019-03-01,1.0,5.3,,,,,
510
+ 2019-04-01,,,0.9,50.1,54.3,1884670.33,540614.6
511
+ 2019-04-01,-0.4,8.5,,,,,
512
+ 2019-05-01,,,0.6,49.4,54.3,1891153.7,544355.64
513
+ 2019-05-01,0.1,5.4,,,,,
514
+ 2019-06-01,,,0.0,49.4,54.2,1921360.19,567696.18
515
+ 2019-06-01,0.0,5.0,,,,,
516
+ 2019-07-01,,,-0.3,49.7,53.7,1919410.82,553043.11
517
+ 2019-07-01,-0.1,6.3,,,,,
518
+ 2019-08-01,,,-0.8,49.5,53.8,1935492.43,556798.09
519
+ 2019-08-01,0.4,4.8,,,,,
520
+ 2019-09-01,,,-1.2,49.8,53.7,1952250.49,557137.95
521
+ 2019-09-01,0.7,4.4,,,,,
522
+ 2019-10-01,,,-1.6,49.3,52.8,1945600.55,558143.92
523
+ 2019-10-01,0.9,5.8,,,,,
524
+ 2019-11-01,,,-1.4,50.2,54.4,1961429.56,562486.52
525
+ 2019-12-01,,,-0.5,50.2,53.5,1986488.82,576009.15
526
+ 2019-12-01,0.4,6.2,,,,,
527
+ 2020-01-01,,,0.1,50.0,54.1,2023066.485,545531.7866
528
+ 2020-01-01,0.0,6.9,,,,,
529
+ 2020-02-01,,,-0.4,35.7,29.6,2030830.424,552700.7291
530
+ 2020-02-01,1.4,,,,,,
531
+ 2020-03-01,,,-1.5,52.0,52.3,2080923.411,575050.2863
532
+ 2020-03-01,0.8,-13.5,,,,,
533
+ 2020-04-01,,,-3.1,50.8,53.2,2093533.829,570150.4789
534
+ 2020-04-01,-1.2,-1.1,,,,,
535
+ 2020-05-01,,,-3.7,50.6,53.6,2100183.741,581111.0573
536
+ 2020-05-01,-0.9,3.9,,,,,
537
+ 2020-06-01,,,-3.0,50.9,54.4,2134948.661,604317.9685
538
+ 2020-06-01,-0.8,4.4,,,,,
539
+ 2020-07-01,,,-2.4,51.1,54.2,2125458.462,591192.6368
540
+ 2020-07-01,-0.1,4.8,,,,,
541
+ 2020-08-01,,,-2.0,51.0,55.2,2136836.91,601289.1
542
+ 2020-08-01,0.6,4.8,,,,,
543
+ 2020-09-01,,,-2.1,51.5,55.9,2164084.8,602312.12
544
+ 2020-09-01,0.4,5.6,,,,,
545
+ 2020-10-01,,,-2.1,51.4,56.2,2149720.42,609182.41
546
+ 2020-10-01,0.2,6.9,,,,,
547
+ 2020-11-01,,,-1.5,52.1,56.4,2172002.55,618632.17
548
+ 2020-11-01,-0.3,,,,,,
549
+ 2020-12-01,,,-0.4,51.9,55.7,2186795.89,625580.99
550
+ 2020-12-01,-0.6,7.0,,,,,
551
+ 2021-01-01,,,0.3,51.3,52.4,2213047.33,625563.81
552
+ 2021-01-01,0.7,7.3,,,,,
553
+ 2021-02-01,,,1.7,50.6,51.4,2236030.26,593487.46
554
+ 2021-02-01,1.0,,,,,,
555
+ 2021-03-01,,,4.4,51.9,56.3,2276488.45,616113.17
556
+ 2021-03-01,0.6,35.1,,,,,
557
+ 2021-04-01,,,6.8,51.1,54.9,2262107.12,605421.89
558
+ 2021-04-01,-0.5,14.1,,,,,
559
+ 2021-05-01,,,9.0,51.0,55.2,2275538.07,616828.32
560
+ 2021-05-01,-0.3,9.8,,,,,
561
+ 2021-06-01,,,8.8,50.9,53.5,2317788.36,637479.36
562
+ 2021-06-01,-0.2,8.8,,,,,
563
+ 2021-07-01,,,9.0,50.4,53.3,2302153.82,620367.05
564
+ 2021-07-01,-0.4,8.3,,,,,
565
+ 2021-08-01,,,9.5,50.1,47.5,2312267.68,626658.69
566
+ 2021-08-01,0.3,6.4,,,,,
567
+ 2021-09-01,,,10.7,49.6,53.2,2342829.7,624645.68
568
+ 2021-09-01,0.1,5.3,,,,,
569
+ 2021-10-01,,,13.5,49.2,52.4,2336160.48,626082.12
570
+ 2021-10-01,0.0,3.1,,,,,
571
+ 2021-11-01,,,12.9,50.1,52.3,2356012.76,637482.04
572
+ 2021-11-01,0.7,3.5,,,,,
573
+ 2021-12-01,,,10.3,50.3,52.7,2382899.56,647443.35
574
+ 2021-12-01,0.4,3.8,,,,,
575
+ 2022-01-01,,,9.1,50.1,51.1,2431022.72,613859.35
576
+ 2022-01-01,-0.3,4.3,,,,,
577
+ 2022-02-01,,,8.8,50.2,51.6,2441488.9,621612.11
578
+ 2022-02-01,0.4,,,,,,
579
+ 2022-03-01,,,8.3,49.5,48.4,2497688.34,645063.8
580
+ 2022-03-01,0.6,7.5,,,,,
581
+ 2022-04-01,,,8.0,47.4,41.9,2499710.9,636139.01
582
+ 2022-04-01,0.0,5.0,,,,,
583
+ 2022-05-01,,,6.4,49.6,47.8,2527026.15,645107.52
584
+ 2022-05-01,0.4,-2.9,,,,,
585
+ 2022-06-01,,,6.1,50.2,54.7,2581451.2,674374.81
586
+ 2022-06-01,-0.2,0.7,,,,,
587
+ 2022-07-01,,,4.2,49.0,53.8,2578078.57,661832.33
588
+ 2022-07-01,0.0,3.9,,,,,
589
+ 2022-08-01,,,2.3,49.4,52.6,2595068.27,664604.85
590
+ 2022-08-01,0.5,3.8,,,,,
591
+ 2022-09-01,,,0.9,50.1,50.6,2626600.92,664535.17
592
+ 2022-09-01,-0.1,4.2,,,,,
593
+ 2022-10-01,,,-1.3,49.2,48.7,2612914.57,662140.99
594
+ 2022-10-01,0.3,6.3,,,,,
595
+ 2022-11-01,,,-1.3,48.0,46.7,2647008.48,667042.61
596
+ 2022-11-01,0.1,5.0,,,,,
597
+ 2022-12-01,,,-0.7,47.0,41.6,2664320.84,671674.76
598
+ 2022-12-01,-0.2,2.2,,,,,
599
+ 2023-01-01,,,-0.8,50.1,54.4,2738072.06,655214.16
600
+ 2023-01-01,0.0,1.3,,,,,
601
+ 2023-02-01,,,-1.4,52.6,56.3,2755249.23,657938.74
602
+ 2023-02-01,0.8,,,,,,
603
+ 2023-03-01,,,-2.5,51.9,58.2,2814566.31,678059.63
604
+ 2023-03-01,-0.5,2.4,,,,,
605
+ 2023-04-01,,,-3.6,49.2,56.4,2808469.34,669761.55
606
+ 2023-04-01,-0.3,3.9,,,,,
607
+ 2023-05-01,,,-4.6,48.8,54.5,2820504.68,675252.98
608
+ 2023-05-01,-0.1,5.6,,,,,
609
+ 2023-06-01,,,-5.4,49.0,53.2,2873023.83,695595.48
610
+ 2023-06-01,-0.2,3.5,,,,,
611
+ 2023-07-01,,,-4.4,49.3,51.5,2854031.56,677218.92
612
+ 2023-07-01,-0.2,4.4,,,,,
613
+ 2023-08-01,,,-3.0,49.7,51.0,2869343.25,679588.35
614
+ 2023-08-01,0.2,3.7,,,,,
615
+ 2023-09-01,,,-2.5,50.2,51.7,2896659.11,678443.65
616
+ 2023-09-01,0.3,4.5,,,,,
617
+ 2023-10-01,,,-2.6,49.5,50.6,2882276.07,674696.07
618
+ 2023-10-01,0.2,4.5,,,,,
619
+ 2023-11-01,,,-3.0,49.4,50.2,2912014.22,675903.41
620
+ 2023-11-01,-0.1,4.6,,,,,
621
+ 2023-12-01,,,-2.7,49.0,50.4,2922713.33,680542.52
622
+ 2023-12-01,-0.5,6.6,,,,,
623
+ 2024-01-01,,,-2.5,49.2,50.7,2976250.2,1120120.0
624
+ 2024-01-01,0.1,6.8,,,,,
625
+ 2024-02-01,,,-2.7,49.1,51.4,2995572.97,1093158.0
626
+ 2024-02-01,0.3,,,,,,
627
+ 2024-03-01,,,-2.8,50.8,53.0,3047952.16,1117433.0
628
+ 2024-03-01,1.0,7.0,,,,,
629
+ 2024-04-01,,,-2.5,50.4,51.2,3011941.98,1075084.0
630
+ 2024-04-01,-1.0,4.5,,,,,
631
+ 2024-05-01,,,-1.4,49.5,51.1,3018506.73,1064391.0
632
+ 2024-05-01,0.1,6.7,,,,,
633
+ 2024-06-01,,,-0.8,49.5,50.5,3050161.54,1089170.0
634
+ 2024-06-01,-0.1,5.6,,,,,
635
+ 2024-07-01,,,-0.8,49.4,50.2,3033060.78,1051800.0
636
+ 2024-07-01,-0.2,5.3,,,,,
637
+ 2024-08-01,,,-1.8,49.1,50.3,3050461.27,1049684.0
638
+ 2024-08-01,0.5,5.1,,,,,
639
+ 2024-09-01,,,-2.8,49.8,50.0,3094798.24,1055410.0
640
+ 2024-09-01,0.4,4.5,,,,,
641
+ 2024-10-01,,,-2.9,50.1,50.2,3097092.01,1054884.0
642
+ 2024-10-01,0.0,5.4,,,,,
643
+ 2024-11-01,,,-2.5,50.3,50.0,3119587.27,1076379.0
644
+ 2024-11-01,-0.3,5.3,,,,,
645
+ 2024-12-01,,,-2.3,50.1,52.2,3135322.3,1113069.0
646
+ 2024-12-01,-0.6,5.4,,,,,
647
+ 2025-01-01,,,-2.3,49.1,50.2,3185247.18,1124457.45
648
+ 2025-01-01,0.0,6.2,,,,,
649
+ 2025-02-01,,,-2.2,50.2,50.4,3205173.24,1094370.01
650
+ 2025-02-01,0.7,,,,,,
651
+ 2025-03-01,,,-2.5,50.5,50.8,3260554.57,1134863.1
652
+ 2025-03-01,-0.2,5.9,,,,,
653
+ 2025-04-01,,,-2.7,49.0,50.4,3251739.32,1091407.33
654
+ 2025-04-01,-0.4,7.7,,,,,
655
+ 2025-05-01,,,-3.3,49.5,50.3,3257838.11,1089147.65
656
+ 2025-05-01,0.1,6.1,,,,,
657
+ 2025-06-01,,,-3.6,49.7,50.5,3302868.17,1139494.08
658
+ 2025-06-01,-0.2,5.8,,,,,
659
+ 2025-07-01,,,-3.6,49.3,50.1,3299429.06,1110586.92
660
+ 2025-07-01,-0.1,6.8,,,,,
661
+ 2025-08-01,,,-2.9,49.4,50.3,3319831.44,1112255.7
662
+ 2025-08-01,0.4,5.7,,,,,
663
+ 2025-09-01,,,-2.3,49.8,50.0,3353771.03,1131455.07
664
+ 2025-10-01,,,-2.1,49.0,50.1,3351312.31,1119962.73
665
+ 2025-11-01,,,-2.2,49.2,49.5,3369890.52,1128866.64
666
+ 2025-12-01,,,-1.9,50.1,50.2,3402948.06,1155146.5
667
+ 2026-01-01,,,-1.4,49.3,49.4,3471860.39,1179680.52
668
+ 2026-02-01,,,-0.9,49.0,49.5,3492159.91,1159258.82
data/live/derived.csv ADDED
@@ -0,0 +1,309 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ date,crack_spread_321,copper_gold_ratio,oil_gas_ratio,energy_rel_strength,spread_wti_brent_live,vix_vxn_ratio,gold_oil_ratio,silver_gold_ratio,bdi_momentum_3m
2
+ 2000-08-01,,0.0031800216646737356,6.924685567853464,,,,8.407855003441979,0.017977003241071217,
3
+ 2000-09-01,,0.003346125602308378,5.93461571852982,,,,8.865845777166784,0.017905701968351763,
4
+ 2000-10-01,,0.003195545485076891,7.264444137654342,,,,8.103395687265264,0.01794639598504465,
5
+ 2000-11-01,5.539999961853027,0.0031136616123532096,5.136778058332649,0.15472700667298078,,,7.991124621073041,0.017304700780230053,
6
+ 2000-12-01,7.894800186157227,0.00311213227754739,2.7416880082035635,-0.05065057297595399,,,10.149254019892428,0.016856617787243074,
7
+ 2001-01-01,6.509999871253967,0.003194653591301309,5.079646066093276,-0.07770832622862722,,0.35834011690827533,9.254355367029563,0.01803840278335116,
8
+ 2001-02-01,4.786999583244324,0.0030359821568271324,5.227836161934124,-0.13171337226793045,,0.37514887515655587,9.730123524467144,0.016761620414779518,
9
+ 2001-03-01,9.307000041007996,0.0029410624192350476,5.248508650517063,0.10622323770937658,,0.39706086898394044,9.768939303532957,0.01658782465745307,
10
+ 2001-04-01,13.62959909439087,0.0029034090764484826,6.061767420200116,0.07695909127357237,,0.3708339380202897,9.276177388732181,0.01636363701380687,
11
+ 2001-05-01,12.312599182128906,0.0028345269839770764,7.248339443825516,0.02183919549254565,,0.3794201455339041,9.351426857088036,0.016569921261591566,
12
+ 2001-06-01,3.9157989025115967,0.0026034737755261535,8.478682287943407,-0.060881661832198564,,0.41899315810633736,10.308571660693602,0.015861048485109067,
13
+ 2001-07-01,3.91100013256073,0.002546956957940605,7.994538939010449,-0.04354189614570547,,0.4471561845107018,10.102467109796715,0.01581517597699027,
14
+ 2001-08-01,6.087799668312073,0.002472667681310616,11.428571194796094,0.0560980382403411,,0.47143397253276675,10.088234786385435,0.015167639474677582,
15
+ 2001-09-01,4.896199584007263,0.002209302466275164,10.44117679717639,0.04239425888500303,,0.4897990352644202,12.47972642234291,0.015892612629798,
16
+ 2001-10-01,2.6549986600875854,0.0022254024293987106,6.4357341266183505,-0.0711667876128399,,0.5382518395198058,13.196411518393692,0.015076923882118289,
17
+ 2001-11-01,2.972600221633911,0.0026359986087887755,7.197334581755655,-0.2904723986791323,,0.4920536589615829,14.089505471079585,0.015071193408303941,
18
+ 2001-12-01,3.8997997045516968,0.002343021056818453,7.719844614872869,-0.2561485901907471,,0.5035971240336015,14.047379538786485,0.01642985215503823,
19
+ 2002-01-01,3.8187997341156006,0.0025895071500396153,9.060464497257039,-0.14671211299516373,,0.4967027933781483,14.481520160069197,0.01494505490562326,
20
+ 2002-02-01,2.59399950504303,0.0024064710389965823,9.27813171771774,0.15268676608739573,,0.4674172070582448,13.578947689404798,0.015156724072814234,
21
+ 2002-03-01,6.320001125335693,0.0025132187656519973,8.083205072173353,0.32267753206357586,,0.47960309270958285,11.536409125921777,0.01533707766153641,
22
+ 2002-04-01,5.021998643875122,0.002371317679379423,7.248340012721879,0.4480661232539299,,0.5006855732928596,11.319163925326535,0.014671415197094187,
23
+ 2002-05-01,4.4839993715286255,0.00233231240720166,7.880012531386382,0.19595508250274685,,0.4353889694386855,12.879684223822908,0.01539356821706827,
24
+ 2002-06-01,4.880799293518066,0.0024481658159752834,8.277350246330284,0.16134741400904273,,0.43830887461067874,11.671630411933377,0.01541626852660304,
25
+ 2002-07-01,5.697998881340027,0.002234498622222672,9.1469195949592,0.14359958436152487,,0.5535775741594601,11.221317803815628,0.015155011890431372,
26
+ 2002-08-01,4.292400002479553,0.0021991036813541736,8.792475576426948,0.2847605413274157,,0.5936704194400786,10.77984813044608,0.014202944572646403,
27
+ 2002-09-01,3.2560003995895386,0.002037666065640422,7.359903451364182,0.31073561206523115,,0.6802056497676132,10.630128033639117,0.013985798997088319,
28
+ 2002-10-01,8.673201203346252,0.002245282976875202,6.54956650802667,0.03576894887989712,,0.5876580185449388,11.682586627851324,0.01414779897001604,
29
+ 2002-11-01,4.269800901412964,0.002365845976996746,6.4023810962865095,-0.09421307955467884,,0.5557801183076024,11.781331162958026,0.013933081453282523,
30
+ 2002-12-01,5.1313982009887695,0.0020051784075438375,6.514930159271695,-0.05520491757242918,,0.6097145648900558,11.14102556386047,0.013811852801901451,
31
+ 2003-01-01,7.230002045631409,0.002149063259774581,5.978590223286718,0.26501701252445153,,0.6658833403370318,10.990749216042545,0.013176758959728248,
32
+ 2003-02-01,10.038203477859497,0.0022130209855554333,4.517960650281179,0.4627337328538841,,0.6489268344094624,9.568306743102196,0.013092518213344093,
33
+ 2003-03-01,6.496799468994141,0.0021211669815498564,6.134387600870638,0.030833717535811878,,0.6771196314623563,10.821520102392567,0.01328073845404477,
34
+ 2003-04-01,8.458001136779785,0.0021380124175474128,4.791086004768227,-0.30162428724706214,,0.649219475744714,13.143411477441836,0.013677381090977013,
35
+ 2003-05-01,5.294399738311768,0.002139917616975667,4.729599913794045,-0.3379123289737782,,0.6149715542191009,12.330852725746109,0.012417009664954093,
36
+ 2003-06-01,5.098398923873901,0.0021618497853960828,5.579375676254363,-0.17631469353439666,,0.6250400494159225,11.460748389130151,0.013170520694231545,
37
+ 2003-07-01,5.810998797416687,0.002310734515803216,6.473082095979798,0.10368128513498265,,0.6242793145148133,11.591355251349245,0.014451977896784244,
38
+ 2003-08-01,10.49580204486847,0.0021373434847068488,6.673007830168733,0.021898877272767514,,0.6310975227385496,11.900538987231137,0.013598616023373231,
39
+ 2003-09-01,6.407599091529846,0.0021094967209088155,6.045548906445689,-0.05482408829646179,,0.692049894775548,13.198629582655155,0.013329009250814289,
40
+ 2003-10-01,4.386398553848267,0.002436931018550175,5.9493153189194015,-0.10781481216725586,,0.6468461541031113,13.208519131739992,0.013157347243811787,
41
+ 2003-11-01,4.703400611877441,0.00228578637385481,6.174619017974086,-0.08653485367878533,,0.636753813053942,13.048339025680333,0.013495464172881916,
42
+ 2003-12-01,6.83539879322052,0.0025090208135762756,5.254483724511906,-0.002720629500118532,,0.747652088048947,12.782903024068258,0.014320423126871248,
43
+ 2004-01-01,7.709601044654846,0.0028418696468972817,6.123772509807544,0.05880986131077304,,0.6636073230050894,12.169440891963946,0.015529586333898953,
44
+ 2004-02-01,7.952601075172424,0.003387992116636506,6.676514139463279,0.1071131630642237,,0.637040284277285,10.962389257694964,0.01689202876454591,
45
+ 2004-03-01,8.849600791931152,0.0031792652530327832,6.027304531717855,0.08677936037521539,,0.7045454380957897,11.94910536457484,0.018572431773919904,
46
+ 2004-04-01,10.970398783683777,0.0031253228815870332,6.376663448432906,0.15208106336599647,,0.6680917543419223,10.353129719938773,0.015705426533976344,
47
+ 2004-05-01,14.336398363113403,0.0032436548150653133,6.190624278962718,0.12406492664397417,,0.7266760456968733,9.879638651893877,0.015494923906238557,
48
+ 2004-06-01,9.506999254226685,0.0030692817732523325,6.019496014313652,0.023083375542750195,,0.7403200583658365,10.596491610726064,0.014712175071516762,
49
+ 2004-07-01,8.781200885772705,0.0033452684617017964,7.16623025391121,0.17678889990231983,,0.6572286591662361,8.926940794561379,0.01675191864633788,
50
+ 2004-08-01,5.208400726318359,0.00312134511980475,8.301143063705243,0.07083817123009517,,0.6671029629271382,9.74358984553698,0.016498538033942134,
51
+ 2004-09-01,7.487002372741699,0.0033436826733660367,7.305371423839214,0.3628292134865313,,0.6513672094779672,8.43473040585712,0.016517792423510994,
52
+ 2004-10-01,5.796801328659058,0.003144690703893242,5.932377771069146,0.15588467079369717,,0.7429224082385003,8.278593776798033,0.017017502489795833,
53
+ 2004-11-01,5.759799957275391,0.0031974296432969876,6.4475067978381,0.10341767980940308,,0.7027600670479155,9.185833054595049,0.017112785859672644,
54
+ 2004-12-01,4.24940037727356,0.00339885711669145,7.06618955437255,-0.21203122579815137,,0.7152852538056876,10.069044702137159,0.015558857509032518,
55
+ 2005-01-01,7.32680082321167,0.003468468709018599,7.62537573153189,-0.11396569002710022,,0.6956049637464365,8.75103695244204,0.015972025091301436,
56
+ 2005-02-01,4.006399631500244,0.0034364261168306153,7.689450199947388,0.027957697569111595,,0.6685113518013844,8.434782608532661,0.016859107001092312,
57
+ 2005-03-01,14.143597841262817,0.0035199437853082145,7.238991559167108,0.300880386311728,,0.7943343206789707,7.738267155083653,0.01677396729639397,
58
+ 2005-04-01,12.193597078323364,0.0034436782201052022,7.550493686427358,0.05220798142712735,,0.8257820745827857,8.748994153486052,0.015866666552627744,
59
+ 2005-05-01,9.499800205230713,0.0036151814541403944,8.147044942735395,0.014304385049553114,,0.824953411391463,8.010390186774101,0.017881335540628412,
60
+ 2005-06-01,10.186200857162476,0.0035638909796179975,8.093396422309212,0.010758429244408507,,0.832641765508826,7.715044139624236,0.016122963928241172,
61
+ 2005-07-01,11.020400524139404,0.003925331528156308,7.68167380202244,0.1513766257503344,,0.8341744621091374,7.097572990843556,0.0168364736422924,
62
+ 2005-08-01,33.0079984664917,0.003907330797937043,6.00941437428746,0.3023382007546669,,0.8565601868074771,6.292427798437826,0.01563162823450725,
63
+ 2005-09-01,22.569000720977783,0.0038411513066159073,4.758278867163568,0.14092861905844023,,0.8955672201054408,7.080314237894062,0.015901919366928714,
64
+ 2005-10-01,7.748002052307129,0.004076542684952132,4.896353845981073,0.008641671991950983,,0.8515842072754192,7.782798178696472,0.016233068354418068,
65
+ 2005-11-01,5.206801891326904,0.0041953093855102794,4.538400567767782,-0.19243940050255948,,0.7877204499208572,8.628751024566865,0.016740799900478602,
66
+ 2005-12-01,11.871999979019165,0.004180042698045755,5.437861811644527,-0.09435509084249227,,0.8464235273665375,8.471493575058684,0.017056662369424838,
67
+ 2006-01-01,6.4690024852752686,0.003916433330551661,7.290682511045687,0.07600820729823354,,0.6969859990174361,8.404004758138354,0.017256483167664507,
68
+ 2006-02-01,5.798399209976196,0.00389155983181056,9.146559097360093,0.046399381852764376,,0.7717323532490103,9.145090001176069,0.017307693535545964,
69
+ 2006-03-01,17.241204738616943,0.00427638358245846,9.241331052933125,0.05426422028637412,,0.6983446177547928,8.731802667970122,0.019731866247996055,
70
+ 2006-04-01,18.18060541152954,0.005117367389337366,10.9656749236972,0.03445377944207495,,0.7472598311287189,9.067891105865437,0.020727217677015807,
71
+ 2006-05-01,20.201402187347412,0.005784435865934995,11.166980398480302,0.16913947692091946,,0.7660764787817104,9.012484103518192,0.019296497686333812,
72
+ 2006-06-01,20.52559757232666,0.005643846936205033,12.157765469349856,0.12936290664589323,,0.7311347327682586,8.292781456520553,0.017783210835198578,
73
+ 2006-07-01,18.939401149749756,0.00569221038411407,9.061015407048389,0.06096242291090026,,0.7353664468585233,8.524193537521773,0.017857142212653086,
74
+ 2006-08-01,8.078399658203125,0.005542418862072175,11.617064114465933,-0.041005170318549555,,0.7078781397908769,8.90834052625798,0.02061031972412211,
75
+ 2006-09-01,4.444000005722046,0.005778483547772637,11.193950376737387,-0.2013198724040669,,0.6776017723286808,9.515180051316541,0.01912796571372763,
76
+ 2006-10-01,3.9913992881774902,0.00552226469207601,7.795327868186107,-0.2899502340750063,,0.6416185474187406,10.286054491473413,0.020215196799707565,
77
+ 2006-11-01,9.92339825630188,0.0049026122242657125,7.138173003307999,-0.17573132337865782,,0.6600120625261815,10.247109353060697,0.021525737618152165,
78
+ 2006-12-01,6.179401636123657,0.004493073105637842,9.692014811526633,-0.0912871140727528,,0.7122612905084277,10.404586734393062,0.02017947039268122,
79
+ 2007-01-01,7.049601793289185,0.003962423172459054,7.5831486592645465,-0.05380698960026764,,0.6061663613705652,11.214310403052247,0.020726993771386683,
80
+ 2007-02-01,14.868399143218994,0.004082760592132456,8.464383464741088,-0.025645441533823865,,0.7510959356944081,10.833468433158966,0.021063638881385818,
81
+ 2007-03-01,19.563598155975342,0.004741327435355422,8.52134574068938,0.07714680445156663,,0.8026316077975832,10.065279677316205,0.020196078949174294,
82
+ 2007-04-01,29.41300082206726,0.005204261706903057,8.356861220583937,0.09951961570343526,,0.8238702246602554,10.35611032523126,0.019757530778551743,
83
+ 2007-05-01,25.381396293640137,0.005133888184024587,8.066793016981634,-0.05207176140031122,,0.7740213355596507,10.326511137788872,0.02028593100863575,
84
+ 2007-06-01,22.004197120666504,0.005328653236404368,10.435553338677956,0.014966198093908423,,0.9087345457267662,9.169495936310977,0.019060330431285084,
85
+ 2007-07-01,11.132399559020996,0.005478332503156114,12.632854024325933,0.2085113194855358,1.1599960327148438,0.9987261664005325,8.527042989544514,0.019418202631831617,
86
+ 2007-08-01,12.003997802734375,0.005068350688479007,13.54060017924153,0.1936923247387793,1.3499984741210938,0.9531185693175255,9.089681140857087,0.017924219502710063,
87
+ 2007-09-01,7.582996845245361,0.0048875876923254475,11.886463611429507,0.13978284023377285,2.4900054931640625,0.8567348787744985,9.096252197800661,0.018570274500007252,
88
+ 2007-10-01,6.099200248718262,0.0043787877969012215,11.348139211733859,0.1440005655897718,3.9000015258789062,0.8018174035678575,8.37829271362562,0.018152777594726454,
89
+ 2007-11-01,9.959198474884033,0.004036052180487858,12.148726173130564,0.1932853196719868,0.4499969482421875,0.7982548391952949,8.81749543761551,0.01785093336694149,
90
+ 2007-12-01,10.363996028900146,0.003629775837260681,12.826407308353328,0.2136058892745274,2.1300048828125,0.8687258814874093,8.698687176541451,0.017723080007935495,
91
+ 2008-01-01,8.38779592514038,0.0035650806920667984,11.363635857548463,0.08084833651365098,-0.45999908447265625,0.8429858695756495,10.056675882255853,0.018367833239393682,
92
+ 2008-02-01,8.260203838348389,0.003962555390217842,10.873371174354128,0.2496280198994726,1.7399978637695312,0.9331927009921055,9.545365382291479,0.02037650556735737,
93
+ 2008-03-01,14.365201950073242,0.004216874117851871,10.056430403815138,0.15754460145815163,1.279998779296875,0.881887045526101,9.019491983489157,0.01885505281417507,
94
+ 2008-04-01,13.091602325439453,0.004559573563877013,10.463893273357703,0.23151448869039104,2.0999984741210938,0.8517001656958122,7.604442047835703,0.01912610227418825,
95
+ 2008-05-01,19.336402893066406,0.004088808825525711,10.881824977872652,0.1980722173231595,-0.43000030517578125,0.8551558559537088,6.967412629897364,0.0189642735216783,
96
+ 2008-06-01,12.682596683502197,0.004205894939906276,10.484535555240953,0.4105064518461796,0.1699981689453125,0.8047715247962735,6.615714372860111,0.018808032656753286,
97
+ 2008-07-01,9.405800342559814,0.0040666374270508935,13.606754677070276,0.17891510547173994,0.09999847412109375,0.8742378328231913,7.36540950129134,0.019422255745491206,
98
+ 2008-08-01,13.36380386352539,0.004135415595651559,14.536069671266047,-0.00942320299316557,1.4099960327148438,0.8597002174908844,7.182574002785632,0.016407814483572224,
99
+ 2008-09-01,9.021999835968018,0.0033035918223675814,13.530518505045956,-0.1923616000584193,2.470001220703125,0.9250821440781438,8.686407169118711,0.013991077300149542,
100
+ 2008-10-01,0.6346030235290527,0.002572544661384973,9.997051102000317,-0.2178699375445602,2.4899978637695312,0.9932006657778975,10.570712484733837,0.013574218342527429,
101
+ 2008-11-01,1.095397710800171,0.0019890957672465564,8.36098285455264,-0.22722418114212584,0.9399986267089844,0.9862622574624265,14.995407084618792,0.012478559504138759,
102
+ 2008-12-01,3.3094024658203125,0.0015787686956417978,7.9331193065151915,-0.3312541171897313,-0.9900016784667969,0.9806324859334031,19.81165932278742,0.012754640979112176,
103
+ 2009-01-01,14.202400207519531,0.001576620329604274,9.436269418965825,-0.23786266380697918,-4.200000762939453,0.9979968806371114,22.248080157896965,0.013544700296499228,
104
+ 2009-02-01,8.822201013565063,0.0016208178681747878,10.662219818710975,0.002147294824099255,-2.44000244140625,1.0236307359241763,21.034406507697017,0.013898035090953876,
105
+ 2009-03-01,8.353198766708374,0.001993279899534605,13.151482927237042,0.23012054413782534,0.43000030517578125,0.9986425028675573,18.57833222718864,0.014063516935620253,
106
+ 2009-04-01,8.563401460647583,0.0023049286461866826,15.155647890061436,0.16966326262342468,-0.8400001525878906,0.9961790558685389,17.423709522694388,0.013814977137669372,
107
+ 2009-05-01,10.744601488113403,0.002245096054216356,17.290742342037426,0.23107917969729308,0.7900009155273438,0.9823369412597515,14.760971555055587,0.01593788371067433,
108
+ 2009-06-01,7.2836010456085205,0.002435551673457501,18.224249980762508,0.2551523127580626,0.589996337890625,0.987261140997682,13.265130686350917,0.014641355534485893,
109
+ 2009-07-01,12.917604207992554,0.002743525078457409,19.011769700860654,0.22718780843846753,-2.25,0.990825696731312,13.732182204472187,0.014609415363897116,
110
+ 2009-08-01,10.554001569747925,0.002950509668717162,23.500167653945415,-0.05536301883041972,0.30999755859375,0.9573058577433894,13.603488059573943,0.015654092226944544,
111
+ 2009-09-01,2.859200954437256,0.0027867063643412723,14.585829255797304,-0.1395479115391589,1.5400009155273438,0.9664151173352886,14.275598233573016,0.016503967936060442,
112
+ 2009-10-01,5.144999265670776,0.0028349525140769815,15.262636039700821,0.059383809078538574,1.8000030517578125,1.0295203315280534,13.50259676829055,0.0156256622611072,
113
+ 2009-11-01,6.995798587799072,0.002665735357502742,15.940593641263463,0.03113666239296209,-1.19000244140625,0.991103949922447,15.283385018467001,0.015659132352485627,
114
+ 2009-12-01,7.77319860458374,0.003038258083686616,14.242641819057672,0.06903305546073613,1.4300003051757812,1.001385712987193,13.800402504220985,0.01535975278808675,
115
+ 2010-01-01,7.037400722503662,0.002812557713584381,14.205807596831654,-0.0897406724942098,1.4300003051757812,0.9542636266017249,14.858005337546285,0.014942752137174749,
116
+ 2010-02-01,6.894994735717773,0.002922739825566089,16.55100774969726,0.022710506929711993,2.07000732421875,0.9858442528861794,14.038413223749458,0.01475453749400773,
117
+ 2010-03-01,11.224394798278809,0.003185125166880286,21.649005692171077,0.006721408355144121,1.0600051879882812,0.9601528626988612,13.29154752174098,0.015729810798685104,
118
+ 2010-04-01,12.985401630401611,0.0028281502960861298,21.97704077224151,0.07685876733071417,-1.2900009155273438,0.9995466804114469,13.698200286366156,0.01577069777649876,
119
+ 2010-05-01,10.30719804763794,0.0025548589410973026,17.03985253135771,-0.057775278085391846,-0.04999542236328125,1.0145523275727957,16.387723822508335,0.015188087807033793,
120
+ 2010-06-01,9.810603141784668,0.002357286317716993,16.384314203201587,0.021558873531895895,0.6199951171875,0.9829254841910793,16.468333270066903,0.014990766380539982,
121
+ 2010-07-01,8.632605075836182,0.0027985106697486135,16.036969164274623,-0.011871590246220864,0.7699966430664062,0.9584012871256242,14.967701036538388,0.01522129157563735,
122
+ 2010-08-01,8.904802322387695,0.002692461691552197,18.84695975830192,0.009076648032686818,-2.720001220703125,0.9489981243017647,17.356786437597236,0.015539533732581311,
123
+ 2010-09-01,8.700399398803711,0.002787887882181633,20.653409512751935,-0.049813255247979304,-2.339996337890625,0.9495192961258339,16.353632972975372,0.01666768582491577,
124
+ 2010-10-01,8.577400207519531,0.0027499817107575304,20.165923261777333,-0.042716242984099706,-1.720001220703125,0.9532374541441077,16.665847605099575,0.018097413534563164,
125
+ 2010-11-01,11.752196788787842,0.0027602887756107385,20.122010536938177,0.04444260354200824,-1.80999755859375,0.9271367262890727,16.466531802795863,0.0203501801197993,
126
+ 2010-12-01,12.92140531539917,0.0031239884113064727,20.744606783264846,0.040645444889011006,-3.3700027465820312,0.9111909864578511,15.55154320730986,0.021750756722549218,
127
+ 2011-01-01,16.001999855041504,0.003337082059286437,20.85746625096163,0.04520874067022751,-8.819999694824219,0.8962826922982061,14.467946778300481,0.021123105979122935,
128
+ 2011-02-01,20.41999864578247,0.0031774639955149337,24.020311342596646,0.028656393590916984,-14.830001831054688,0.8929440906004408,14.533361153683327,0.023986375990391284,
129
+ 2011-03-01,23.549996376037598,0.0029883939938654784,24.315334399744366,0.11364992317884792,-10.639999389648438,0.8986828761860014,13.482946101404657,0.026320106334937924,
130
+ 2011-04-01,28.66559648513794,0.0026770566606872143,24.25074529396255,0.1755663242483536,-11.959999084472656,0.8917774596530577,13.657508960049165,0.031223650150229973,
131
+ 2011-05-01,28.299399852752686,0.0027172992998841876,22.01028704696673,0.04554329644030575,-14.030006408691406,0.9397809797097424,14.955210029588962,0.024938473074376077,
132
+ 2011-06-01,30.522600650787354,0.0028436395507658832,21.815271277086325,-0.1019701001581752,-17.06000518798828,0.9249719984479616,15.744079623146632,0.02317246831070149,
133
+ 2011-07-01,34.808003425598145,0.0027476508278243754,23.08805726550636,-0.10770091549770489,-21.040000915527344,0.9681748494209242,17.014630101730834,0.024621997083881658,
134
+ 2011-08-01,39.180805683135986,0.0022898549618915807,21.90675868511247,-0.04135151954588123,-26.040000915527344,1.007969397268213,20.58889821242288,0.022805032164196364,
135
+ 2011-09-01,33.455201625823975,0.001940878754344506,21.603927800490766,-0.026706351616877066,-23.56000518798828,0.955091140967621,20.45959705595124,0.018539249514671688,
136
+ 2011-10-01,23.41179847717285,0.0021047442589433927,23.688358428129696,0.003935987176513334,-16.3699951171875,1.0395558431880765,18.50198418266459,0.019914744677483377,
137
+ 2011-11-01,13.835196495056152,0.0020412489050463103,28.27042307890703,0.10702385477635401,-10.459999084472656,1.001080258473219,17.39238729939355,0.018751646515554953,
138
+ 2011-12-01,17.476398468017578,0.0021915313903613297,33.06456978459908,0.13633009915806782,-8.549995422363281,1.0116731719216825,15.843367598929566,0.01780240077323052,
139
+ 2012-01-01,25.24639320373535,0.0021794796859307642,39.34478725213836,0.009602280869657642,-12.5,0.977375622404373,17.64622247738913,0.019123605003565126,
140
+ 2012-02-01,22.746399402618408,0.002263582684643853,40.9288999350393,-0.02834832516344421,-15.590003967285156,0.9293999180612188,15.969926489882575,0.020225159184342326,
141
+ 2012-03-01,36.25480318069458,0.0022907804288549577,48.457196663570265,-0.07757062118623792,-19.860000610351562,0.9016869992754801,16.203650778552717,0.019450668436027323,
142
+ 2012-04-01,28.860798358917236,0.0023046169605506184,45.89496663522559,-0.0002610597766994349,-14.599998474121094,0.9136920191455283,15.861542679824286,0.018611878790055835,
143
+ 2012-05-01,30.456800937652588,0.0021518622839177223,35.72667266586545,-0.15130779494077495,-15.340003967285156,0.929316339599179,18.058476801247174,0.01775310358070484,
144
+ 2012-06-01,29.14560317993164,0.0021764889364107058,30.084986760660865,-0.1424261427197453,-12.840003967285156,0.9158177089623039,18.873587773780745,0.0171998752252503,
145
+ 2012-07-01,33.332600593566895,0.002123253717809032,27.441568867371494,-0.14699525560698645,-16.860000610351562,0.9325123653051105,18.28866732491231,0.017320708138929743,
146
+ 2012-08-01,34.861202239990234,0.002050338386703278,34.46588079015269,0.04141870309769802,-18.099998474121094,0.952043539467393,17.462423077143573,0.018621632015816493,
147
+ 2012-09-01,45.75759744644165,0.0021303145242588506,27.76807357450514,0.027462503752299305,-20.199996948242188,0.9247501075633789,19.211410442172344,0.01948901742804033,
148
+ 2012-10-01,34.04520511627197,0.002053566201110266,23.35861318793331,-0.04447662164308097,-22.459999084472656,0.914904104788808,19.915352997725748,0.018799416710011115,
149
+ 2012-11-01,30.987396717071533,0.0021213980130153124,24.967705959753115,-0.08519143989577138,-22.31999969482422,0.9357311757848366,19.24305425626645,0.019407328360420067,
150
+ 2012-12-01,29.547400951385498,0.0021739908802668106,27.400775211488718,0.006037469803802598,-19.290000915527344,0.8764591889575349,18.24003544300046,0.018015882168613325,
151
+ 2013-01-01,31.04960298538208,0.002242261874076791,29.197363948607077,0.06958573849526473,-18.06000518798828,0.9629130010433385,17.033542024376608,0.0188696853818737,
152
+ 2013-02-01,31.165393829345703,0.002235849669353757,26.405622895490783,-0.03423669874776447,-19.329994201660156,0.9515338008523301,17.139596945669055,0.017997719044520855,
153
+ 2013-03-01,30.81959629058838,0.0021287935019935976,24.16252467126529,-0.04134748401730359,-12.789993286132812,0.9563253059996399,16.402344890981592,0.017740154847415535,
154
+ 2013-04-01,25.192800045013428,0.0021651270925940303,21.519686957978706,-0.10772785451148015,-8.910003662109375,0.8813559532202132,15.752193083433408,0.016399945591966877,
155
+ 2013-05-01,24.93980073928833,0.002361769418347192,23.08483984591931,-0.0774925133389388,-8.419998168945312,1.019387083762373,15.141893629303453,0.01596151158303786,
156
+ 2013-06-01,20.8132061958313,0.0024926456891346234,27.085552870030977,-0.03052739198802612,-5.600006103515625,1.0236794967961633,12.673985912984666,0.015893936458192544,
157
+ 2013-07-01,22.811001300811768,0.0023761809938001727,30.4788147782543,0.06861244076714401,-2.6699981689453125,0.9438596356716685,12.495477860181243,0.014947424729420662,
158
+ 2013-08-01,20.816800594329834,0.002310006418613924,30.061435018416233,0.1691229129794236,-6.3600006103515625,0.9703365408804491,12.968880220938484,0.016806102538615073,
159
+ 2013-09-01,13.03559923171997,0.002503580926633717,28.74438299075199,0.012895801644567273,-6.040000915527344,0.9922295776858429,12.962962730881886,0.01632566915741634,
160
+ 2013-10-01,18.912798404693604,0.0024890451596394562,26.914268308786298,-0.1243630130459461,-12.459999084472656,0.9240591326159788,13.73313979343639,0.016494410044651662,
161
+ 2013-11-01,25.103997230529785,0.0025831601198598366,23.449671544437745,-0.24453420935445824,-16.970001220703125,0.9834888376270404,13.487920180195246,0.015977132008891153,
162
+ 2013-12-01,22.66320037841797,0.0028633828759396913,23.267138936617663,-0.13740985087108626,-12.3800048828125,0.8886010776562214,12.211949266029237,0.016090357191993695,
163
+ 2014-01-01,21.983200550079346,0.0025969680314253275,19.722840583448647,-0.0033133304581898226,-8.910003662109375,0.9704797318301095,12.720279031148475,0.015406015578053664,
164
+ 2014-02-01,18.774600505828857,0.002450809791447662,22.258622636254508,0.0767454101441527,-6.480003356933594,0.9327115113648611,12.880398397218148,0.016046617285638942,
165
+ 2014-03-01,20.97599744796753,0.0023737727206009536,23.239534694978914,0.019133680396293595,-6.180000305175781,0.7660043858067577,12.634376858310624,0.015376343210927968,
166
+ 2014-04-01,25.564201831817627,0.0023382989076215126,20.7144333660988,-0.033781786336266606,-8.330001831054688,0.7584841411302395,12.989773444175832,0.014756869281770257,
167
+ 2014-05-01,21.57640027999878,0.002517662154341564,22.613386878576414,-0.03331358177454624,-6.700004577636719,0.8278866549546806,12.127348716548822,0.014975112591135233,
168
+ 2014-06-01,22.377193450927734,0.0024118624950758365,23.620265306859274,-0.009630766816892455,-6.989997863769531,0.9475839195519391,12.54436760331637,0.0158927214355082,
169
+ 2014-07-01,21.51320171356201,0.002515413975466792,25.558447304330734,-0.04053993320562266,-7.849998474121094,1.0077289577566109,13.051849574347798,0.015900256313812984,
170
+ 2014-08-01,21.952202320098877,0.0024381706886059383,23.606395500638985,-0.1072044049827684,-7.230003356933594,0.9512195212706944,13.39933369197772,0.015086327563004287,
171
+ 2014-09-01,18.33399772644043,0.002482858387607444,22.120846341863817,-0.14101047602416783,-3.5099945068359375,0.8932091599457733,13.27884983938263,0.014048740618574787,
172
+ 2014-10-01,15.409000873565674,0.002613782061761845,20.795249893689096,-0.22484530833101568,-5.319999694824219,0.8874129892289987,14.540600475032027,0.013728118862139923,
173
+ 2014-11-01,18.390398025512695,0.002433628330431331,16.181507928300498,-0.3426912911277632,-4.0,0.9043419355352208,17.765682903187127,0.013179885095277797,
174
+ 2014-12-01,12.770800113677979,0.0023975842253154953,18.438906737537668,-0.45955619450490137,-4.060001373291016,0.9775968105213644,22.224516880387867,0.013147224646839251,
175
+ 2015-01-01,14.993798732757568,0.0019773172595590844,17.926422123402403,-0.389616044754005,-4.75,0.9712829626761089,26.502901233193562,0.013447007771146937,
176
+ 2015-02-01,31.917401790618896,0.002239815384124522,18.200438512611797,-0.26563670370057046,-12.820003509521484,0.9124487179272853,24.368971391962983,0.0136178466276881,
177
+ 2015-03-01,26.29060125350952,0.002321866313670047,18.030301729029116,-0.110805337223717,-7.510002136230469,0.8843261510320375,24.85504230014427,0.014014875933171913,
178
+ 2015-04-01,25.429799556732178,0.002441221094504245,21.675755222639737,0.1907374192103315,-7.149997711181641,0.8812840695423176,19.82894521574099,0.01363667136026406,
179
+ 2015-05-01,25.476598501205444,0.0023200773247503345,22.823618519463086,0.2104435490425045,-5.259998321533203,0.9383050950270906,19.724710438525666,0.014027240350414359,
180
+ 2015-06-01,25.45120143890381,0.002239436712519533,20.99929408164797,0.2516812447655,-4.119998931884766,0.942605966776808,19.699007498464116,0.01327443417960323,
181
+ 2015-07-01,26.603999853134155,0.0021622979395054917,17.349041798500565,-0.21858301450187756,-5.090000152587891,0.8307059463997744,23.23641870140066,0.013467896576032017,
182
+ 2015-08-01,20.16160011291504,0.0020661011926190044,18.296765613182004,-0.11991971977640536,-4.950000762939453,0.9502005425043795,22.999999146653064,0.012881760320599029,
183
+ 2015-09-01,14.989599227905273,0.0021026445471703297,17.864501345267502,-0.17245095833350843,-3.279998779296875,0.9134974003677773,24.73940998448273,0.013010308861133055,
184
+ 2015-10-01,13.741599321365356,0.0020267191655880205,20.073243490567695,0.00038800396797278314,-2.970001220703125,0.8710982866212931,24.500965791735318,0.013636443263011454,
185
+ 2015-11-01,15.110199451446533,0.001918277368048193,18.635348305221203,-0.20833355133145925,-2.9599990844726562,0.8911601557969514,25.58943600855114,0.013182585426009337,
186
+ 2015-12-01,13.848598718643188,0.0020046212070890094,15.849380655787101,-0.24306721092043693,-0.23999786376953125,0.9276617352047736,28.625810545134637,0.012991605191136056,
187
+ 2016-01-01,12.038198947906494,0.001848799575548702,14.630112051398484,-0.21148069051290053,-1.1200027465820312,0.8544839798485871,33.20642652733927,0.012745431548165735,
188
+ 2016-02-01,10.705600261688232,0.001725018188365981,19.72530722237836,-0.11844958507746028,-2.220001220703125,0.8726114608041463,36.56000072229637,0.012072290796419104,
189
+ 2016-03-01,18.189199209213257,0.0017675417633627555,19.571209954567493,0.027366978444034462,-1.2599983215332031,0.8278931449626749,32.19092191517317,0.012526333373660523,
190
+ 2016-04-01,17.745002031326294,0.0017677630547500824,21.083562309850137,0.3013976733485626,-2.210002899169922,0.8134715248228593,28.074912947528336,0.013798479856682607,
191
+ 2016-05-01,17.082200527191162,0.0017266216673701542,21.45978853169082,0.3695661333811211,-0.5900001525878906,0.9304917757018235,24.74134595836419,0.013147842838387101,
192
+ 2016-06-01,14.494997501373291,0.0016645175431152322,16.528728250577068,0.24157067764123075,-1.3499984741210938,0.8890785086111005,27.27912216919551,0.01409435709064568,
193
+ 2016-07-01,13.252001285552979,0.0016460340936760263,14.464533904045584,-0.14651457704404847,-0.8600006103515625,0.8496778566800958,32.42788580405286,0.015057079521603518,
194
+ 2016-08-01,14.5843985080719,0.001583518196358349,15.483200363025412,-0.12490234043053339,-2.3400001525878906,0.8748370235938443,29.237136511826858,0.014248985685753087,
195
+ 2016-09-01,14.797799587249756,0.00167669216542588,16.600138795583625,-0.03493249033069079,-0.8199996948242188,0.8601941828518999,27.22429525509588,0.014573211929770544,
196
+ 2016-10-01,14.662997961044312,0.0017306331194985145,15.485789900999395,0.1482725960984429,-1.4399986267089844,0.8830227605867764,27.134015864523626,0.013969326881820726,
197
+ 2016-11-01,14.29500150680542,0.002239067224057991,14.749402935588256,0.09320707758222779,-1.0300025939941406,0.8810310523462671,23.681231418399395,0.01401264046216615,
198
+ 2016-12-01,16.762998819351196,0.0021717390806759735,14.425349499583197,0.08105656041581999,-2.4099998474121094,0.8417266009674297,21.407296609207723,0.013857391191553423,
199
+ 2017-01-01,12.470598220825195,0.00225177889695861,16.94257286214861,0.055144512349091235,-2.8899993896484375,0.8390482716785351,22.885816022233787,0.014489491547229758,
200
+ 2017-02-01,11.017200946807861,0.0021587099224700808,19.470079191097184,0.01747207338594814,-1.5800018310546875,0.9499999788932142,23.192001749486217,0.014705413089013344,
201
+ 2017-03-01,19.03320074081421,0.0021217830570202925,15.862068197687837,-0.11341586705287943,-2.2300033569335938,1.0527659476175588,24.650199336298304,0.014619578206117494,
202
+ 2017-04-01,15.06999683380127,0.0020507858541642214,15.057998007126516,-0.11211680072039543,-2.3999977111816406,0.9384215042906655,25.665921925087474,0.013577916686059347,
203
+ 2017-05-01,18.03580141067505,0.0020259433197509385,15.734287892715649,-0.12572625909942292,-1.9900016784667969,0.8044822398904026,26.32450347697178,0.013654088074295538,
204
+ 2017-06-01,17.04259943962097,0.002175384853681126,15.169686852828002,-0.11580500398158233,-1.8799972534179688,0.6348665483843909,26.948304224001248,0.013353753079295884,
205
+ 2017-07-01,20.719004154205322,0.0022801200592995462,17.956334917928256,-0.01908468120840756,-2.4800033569335938,0.6465028545823386,25.246163479924206,0.01322438048543157,
206
+ 2017-08-01,37.292200326919556,0.0023393102191210267,15.536184249788993,-0.047373379586280295,-5.150001525878906,0.7390090864082903,27.867879820048913,0.013280656580073399,
207
+ 2017-09-01,18.67580246925354,0.002292235661332585,17.183238668491153,0.08269185523736633,-5.870002746582031,0.6866425968420093,24.801626579994835,0.012959032657775411,
208
+ 2017-10-01,21.83179998397827,0.002440410424330666,18.777625265359305,0.041426001009496005,-6.989997863769531,0.6759628167898096,23.299006529802817,0.013137332642265616,
209
+ 2017-11-01,17.492997646331787,0.002385328351665817,18.97520651149983,0.1441500382369243,-6.1699981689453125,0.7080978980645803,22.18118322829084,0.01286679280374719,
210
+ 2017-12-01,19.01460361480713,0.0025105258248814327,20.460547491896534,0.10811805502079253,-6.180000305175781,0.7040816164719572,21.620325858896123,0.013059786288176105,
211
+ 2018-01-01,17.6487979888916,0.002377893962103369,21.612689752486464,0.09381281929082608,-4.319999694824219,0.689058535573483,20.68592508169376,0.012848394677378352,
212
+ 2018-02-01,14.365999221801758,0.002362219746325795,23.11211026926645,0.04884470632055615,-4.1399993896484375,0.9018627975532871,21.34166146989901,0.012408969521014685,
213
+ 2018-03-01,19.958796501159668,0.0022822799682219747,23.76143485762776,0.0870553499875405,-5.329994201660156,0.7485007152991642,20.369571898327,0.012264135904072332,
214
+ 2018-04-01,21.39119815826416,0.0023191765102381586,24.817227428880333,0.12156543365254957,-6.599998474121094,0.7564102900468209,19.194982601874344,0.012393253973397024,
215
+ 2018-05-01,24.128000259399414,0.0023521268711334956,22.710028151060403,0.09075971191439858,-10.549995422363281,0.9195470603607494,19.392899132037815,0.012615953184555148,
216
+ 2018-06-01,17.795000076293945,0.0023583472069435285,25.359097425351397,0.11247681367079165,-5.290000915527344,0.7705939079753563,16.87525317682612,0.012869814962943284,-0.03248462461864543
217
+ 2018-07-01,20.701401233673096,0.002303669296562552,24.716031814767575,-0.060762612014401585,-5.489997863769531,0.6692749020331329,17.796682855384848,0.012666503733324312,0.14418606425440594
218
+ 2018-08-01,21.601795196533203,0.0022069481143587063,23.936901809283228,-0.03137410794254447,-7.6199951171875,0.8017455686942337,17.196275019083984,0.01202865878363152,0.256856257332694
219
+ 2018-09-01,18.50880241394043,0.0023390683515483453,24.351729549135346,-0.08409608933785007,-9.470001220703125,0.7310012026899304,16.266211603873497,0.012272765543387515,0.04083482673071104
220
+ 2018-10-01,15.859203338623047,0.0021970634028633308,20.02759864494005,-0.013051260648353824,-10.160003662109375,0.7290521610460973,18.56224305814636,0.011737193366687992,-0.13109757444959236
221
+ 2018-11-01,15.263400554656982,0.0022762662066160024,11.042931574264781,-0.22162798825414687,-7.779998779296875,0.7522897314613247,23.958373136391153,0.011550565830725962,-0.35514052401658314
222
+ 2018-12-01,15.184798240661621,0.002055855370879462,15.445577873524991,-0.2403521736640114,-8.389999389648438,0.8085241616948771,28.15018835268339,0.01207306502494225,-0.2079337553058006
223
+ 2019-01-01,10.66879916191101,0.002113359200971076,19.115139649818275,-0.17357214242182184,-8.099998474121094,0.8186758834676671,24.53429872997805,0.01214063798736327,-0.4304093478018778
224
+ 2019-02-01,16.729398250579834,0.0022471053762641124,20.34850656576543,0.11469178777215494,-8.80999755859375,0.8608037080044424,22.943027277150595,0.01183577051255424,-0.3269113721327558
225
+ 2019-03-01,20.564399480819702,0.0022706884058133034,22.592036327150254,0.19371597818545827,-8.25,0.8249097078838921,21.499833939157924,0.011647332111063459,-0.4849201889545305
226
+ 2019-04-01,24.67639684677124,0.0022618489836330317,24.81941694722744,0.09874516333427752,-8.890003204345703,0.7903614206789016,20.071977028177027,0.011615215973939384,0.017248462821937594
227
+ 2019-05-01,22.741200923919678,0.0020263438577903725,21.801141019300573,-0.05336562092258479,-10.989997863769531,0.8054239970882944,24.407477547733038,0.011127277676241352,0.10960145310941449
228
+ 2019-06-01,23.14439845085144,0.0019192026538806686,25.333621738582,-0.0656460540521272,-8.080001831054688,0.7631578819974656,24.109798558523327,0.01082003318983509,0.40506457197306234
229
+ 2019-07-01,22.045997381210327,0.0018638244427966258,26.233766571448815,-0.09512687498740457,-6.589996337890625,0.8583599706595325,24.34448499463144,0.011462029977708416,0.301574528972679
230
+ 2019-08-01,15.670000791549683,0.001667434687036925,24.113783973875112,-0.03346416102540095,-5.3300018310546875,0.8476998686370508,27.569873278160724,0.011970903665452441,0.7253061411332111
231
+ 2019-09-01,17.545599699020386,0.0017496760448193587,23.206009202616396,-0.08714312482347908,-6.709999084472656,0.8107837850018141,27.107452550717692,0.011528963143951156,0.49885928944806834
232
+ 2019-10-01,17.785598754882812,0.0017420933270278262,20.577289177361934,-0.09429651579903009,-6.049999237060547,0.7615207258912398,27.895902840033457,0.011918750594129815,0.1184863367229787
233
+ 2019-11-01,15.850602626800537,0.0018026746751872874,24.18676045146231,-0.0720331775349139,-7.260002136230469,0.7967171567672332,26.565162664521264,0.01157819333060184,-0.13271825288852535
234
+ 2019-12-01,14.874600410461426,0.0018387626919070586,27.89401753220791,0.04393519918315336,-4.939998626708984,0.815867390770945,24.88535810350927,0.011732806261914117,-0.21613391542790605
235
+ 2020-01-01,12.866600036621094,0.0015920146200375117,28.006519522193116,-0.11023590648442227,-6.599998474121094,0.8832630201168424,30.70015481425748,0.011353844111987806,-0.45535222846121615
236
+ 2020-02-01,15.182399988174438,0.0016277731881296758,26.579571193219454,-0.129230355491586,-5.760002136230469,0.9299791239530887,34.94414732358321,0.010476951209017,-0.5531915103943217
237
+ 2020-03-01,9.738999843597412,0.001414677260955734,12.487804700236586,-0.46458171560503936,-2.260000228881836,1.0438681996255332,77.31445604143053,0.008903624703404922,-0.5864077705260807
238
+ 2020-04-01,10.944998979568481,0.0013976963304822632,9.666495707389792,-0.5375339260823528,-6.430000305175781,0.967970598257247,89.39490113810513,0.00884574290191246,-0.4358452002016895
239
+ 2020-05-01,6.740998268127441,0.0013970292175182425,19.194160139855107,-0.23759987964289742,0.15999984741210938,0.9839056197671827,48.940545004791275,0.010616615968019043,-0.4322343915004442
240
+ 2020-06-01,10.826197862625122,0.0015133854003829728,22.427184116112645,0.7179518142662857,-1.8800010681152344,0.9895935058271931,45.6582627719289,0.010340769864027103,0.15649452596154512
241
+ 2020-07-01,10.008201360702515,0.0014565925700279869,22.384658076898,1.0143150762729842,-3.029998779296875,0.8757607882683821,48.74099891898499,0.012323720488215254,0.47111907484639226
242
+ 2020-08-01,9.86620044708252,0.001545537673869225,16.201520433472687,0.050832219618871965,-2.6699981689453125,0.7643994335698465,46.17695253122707,0.014452632967824373,0.8322581253819183
243
+ 2020-09-01,9.437997817993164,0.001604503353699093,15.91610684372129,-0.06054570666566339,-0.7299995422363281,0.7444946979587638,46.92938693849382,0.012414834736192202,0.11502028687272436
244
+ 2020-10-01,8.734199047088623,0.0016211249105221967,10.67084076562667,-0.11089438979833788,-1.6699981689453125,0.9205811418690258,52.45599263304585,0.01257963155038963,-0.1693251168338854
245
+ 2020-11-01,8.611802101135254,0.0019262826683049874,15.732130679029245,0.029409719123334233,-2.25,0.7709894849612411,39.16409230605966,0.012690207251424706,-0.24647890477002798
246
+ 2020-12-01,11.583401203155518,0.0018562146660402136,19.109885696166966,0.08948418575655803,-3.279998779296875,0.8447827605402146,39.016899375234985,0.013909461239234283,-0.06553397777336945
247
+ 2021-01-01,14.23559856414795,0.0019344447699489867,20.358815505447776,0.3226408311354223,-3.6800003051757812,0.8838141390341372,35.3888893063823,0.014561792295507334,0.5273264670191036
248
+ 2021-02-01,17.04699969291687,0.002369365269772187,22.194154460390244,0.30408813395511336,-4.629997253417969,0.820610676311849,28.099186594436397,0.015278051501782373,0.9797507612311489
249
+ 2021-03-01,20.330599546432495,0.0023357449343621626,22.684048664161764,0.1615658184533364,-4.380001068115234,0.7794294935105204,28.968898803574366,0.014305636305188794,1.197402661742239
250
+ 2021-04-01,21.269795656204224,0.002534374451310727,21.692255862670255,0.09229422786540065,-3.6699981689453125,0.8126637956133421,27.79647684654702,0.014628529353573729,1.3887814698685035
251
+ 2021-05-01,22.228599071502686,0.0024612351566657667,22.210314238782285,-0.02473399939343124,-3.30999755859375,0.7817164090773562,28.686670819146418,0.014713797650724239,0.8095987357174892
252
+ 2021-06-01,19.174999713897705,0.0024263045445670458,20.128766926286453,0.16018014011974824,-1.6599960327148438,0.7859980338954908,24.102354966410815,0.014775807654188833,0.7346335844638112
253
+ 2021-07-01,23.086803436279297,0.002471863776673401,18.89371391943901,0.11189818789097528,-2.3800048828125,0.8765016933370527,24.511156867661132,0.014083636887208649,0.044534349803404094
254
+ 2021-08-01,25.246798515319824,0.002402203930309643,15.649989091375119,-0.042904991133786874,-4.489997863769531,0.8459958895614228,26.496350364576696,0.013201101423944603,0.23173912711765454
255
+ 2021-09-01,20.854598999023438,0.002330086047292103,12.788477492642885,0.01889687171685006,-3.4899978637695312,0.8682926724205445,23.394643174232232,0.012545433427826998,0.22691645156734985
256
+ 2021-10-01,20.315598964691162,0.0024540102087361195,15.401768864370954,0.08228186492222278,-0.80999755859375,0.8279022776662618,21.3354075205183,0.013429612840611772,0.16434115518795145
257
+ 2021-11-01,18.156002044677734,0.0024120432661338806,14.490913414076893,-0.043668068847934394,-4.3899993896484375,0.9926981065702724,26.799636859784492,0.012835475700835423,-0.059301105178259705
258
+ 2021-12-01,19.809398651123047,0.00243775645619897,20.16353852003221,-0.10407475089170082,-2.5699996948242188,0.8122640892846184,24.298630796725995,0.012764978995883705,-0.18106078462425867
259
+ 2022-01-01,21.999201774597168,0.0024055709413817877,18.085761222189326,0.07430984317682265,-3.05999755859375,0.8232758636772117,20.36301723094882,0.012476323374791752,-0.26964048384176065
260
+ 2022-02-01,24.783597946166992,0.0023399494115786093,21.74466203482494,0.48863126784639255,-5.269996643066406,0.9214547216621688,19.843292939526215,0.012825629013318218,-0.19587239730108374
261
+ 2022-03-01,40.70560121536255,0.002433306048291051,17.773838219749877,0.3828006238754085,-7.6300048828125,0.7617636027986096,19.43757454008721,0.01288785189780102,-0.18006102092760523
262
+ 2022-04-01,59.47259998321533,0.0023018906764401643,14.45196066170385,0.2725899632450277,-4.649993896484375,0.8732026542485152,18.237654067096805,0.012067249948302565,-0.02096631634567314
263
+ 2022-05-01,56.853800773620605,0.0023308190102030372,14.078574795605482,0.25325290978329484,-8.169998168945312,0.7933959971206623,16.069590830906993,0.011749606361813299,0.035464312555248956
264
+ 2022-06-01,51.00920009613037,0.0020589213461967245,19.498526231944417,0.21909797684490584,-9.049995422363281,0.7928748911786365,17.058433615054213,0.011242170535152436,-0.2899090215222756
265
+ 2022-07-01,49.79259967803955,0.002033013818702173,11.984445453565298,-0.05758375864921461,-11.389999389648438,0.7827522907494789,17.875684194880893,0.011433433466550064,-0.4217876936229733
266
+ 2022-08-01,35.430798053741455,0.002054238667292567,9.81154864295098,-0.1761922382949146,-6.939994812011719,0.8036657950325179,19.126744728518208,0.010370153330151512,-0.6466876987877979
267
+ 2022-09-01,36.90880107879639,0.0020705003980453357,11.74844816318753,-0.1956212303803837,-8.470001220703125,0.8636984515490305,20.91332329939398,0.01140519658687083,-0.47350029576678576
268
+ 2022-10-01,50.84219741821289,0.002086618998488273,13.616050118957558,-0.060051386862902345,-8.300003051757812,0.8305519668378762,18.905582427750613,0.011690812222365725,-0.4283413960532626
269
+ 2022-11-01,34.24859571456909,0.00213602523213687,11.623377349988369,-0.1321359117729215,-4.879997253417969,0.7777778017764596,21.675976832135223,0.012342496699340323,0.0025510179256709176
270
+ 2022-12-01,35.67680025100708,0.0020912788551017817,17.93519638630813,-0.061118207000909086,-5.650001525878906,0.785144919420282,22.672562954340673,0.013113150602844532,0.01659287822602229
271
+ 2023-01-01,36.90019702911377,0.0021915003313664615,29.38524674694989,-0.14137054453530906,-5.6199951171875,0.7522295048116078,24.464307503262436,0.01230785135593256,0.0985915909161581
272
+ 2023-02-01,30.602994918823242,0.0022404176240976396,28.04878180276516,-0.01650096750981933,-6.839996337890625,0.7840909492902395,23.73653409412294,0.011460987567764315,0.1513994958023468
273
+ 2023-03-01,37.41220283508301,0.00208456059771074,34.14710983723808,-0.12746136933484464,-4.099998474121094,0.7923729008424071,26.020880766745535,0.01222752677176781,0.09902076633701773
274
+ 2023-04-01,28.705803394317627,0.001944625864546181,31.85891950745434,-0.04928301502911159,-2.7600021362304688,0.7842941885676451,25.919510382912804,0.012561680747693836,0.12307692495793754
275
+ 2023-05-01,35.221603870391846,0.001848872140547554,30.048541629973663,-0.16910237811073414,-4.57000732421875,0.8110307347469488,28.842710089739736,0.011952747410234258,-0.3613259571280726
276
+ 2023-06-01,37.386802196502686,0.0019473218388410727,25.246603612774845,-0.1494721197777057,-4.260002136230469,0.6951406998589778,27.195639753081014,0.011873405734115132,-0.4504950513747168
277
+ 2023-07-01,42.0845947265625,0.0020271504297369597,31.05542941002121,-0.035225599279062214,-3.7599945068359375,0.7054865594737496,24.089241154784606,0.012613042421486994,-0.4349315433868458
278
+ 2023-08-01,37.82560634613037,0.0019463936297512009,30.213150514161303,0.14979593519553602,-3.2300033569335938,0.7241195229369213,23.175893995016057,0.012626148353404622,-0.1539792925634278
279
+ 2023-09-01,24.597997188568115,0.0020161247333973695,30.996928630546872,0.321724730123894,-4.519996643066406,0.8233082655836204,20.3557655791312,0.01203181665211225,-0.010810886045889423
280
+ 2023-10-01,23.089605808258057,0.001834324040776784,22.662935815314817,0.07657551872957014,-6.390007019042969,0.8076580644823608,24.502592364859883,0.011505641832086891,0.01212129735932388
281
+ 2023-11-01,25.261399745941162,0.0018787105843925133,27.109206929479814,-0.10505513645146192,-6.870002746582031,0.7727273089779279,26.83122696318889,0.012410087616184864,0.9079754966151874
282
+ 2023-12-01,22.96620273590088,0.0018815458989255862,28.50039906002578,-0.3231703295665731,-5.3899993896484375,0.7685184705039233,28.78436648141672,0.011565652526336224,1.1056467944555561
283
+ 2024-01-01,24.597200393676758,0.0019051455283229713,36.11904851551568,-0.21924324309641785,-5.8600006103515625,0.7863013907223795,27.005932017462438,0.011253174035356521,1.2435128258720218
284
+ 2024-02-01,23.83359956741333,0.0018744195952041436,42.07526961949658,-0.08541556230497171,-5.3600006103515625,0.7786171023008079,26.139789104333264,0.011079826419908591,0.6345123391965053
285
+ 2024-03-01,30.759204864501953,0.0018054929922689097,47.17526805552578,0.05920138423139898,-4.310005187988281,0.7809123857898378,26.66105508157916,0.011182917821358529,0.19896186449591924
286
+ 2024-04-01,29.159998893737793,0.0019920136377638534,41.15017476074213,0.040939543216394814,-5.930000305175781,0.8491589451187396,27.967776074462275,0.011517413752472979,0.1307829445696307
287
+ 2024-05-01,24.02840566635132,0.0019845883711394714,29.76034055382934,-0.05179122717800522,-4.6300048828125,0.7736526637886318,30.17145040611443,0.01304274921809062,-0.21704920784371795
288
+ 2024-06-01,24.511398315429688,0.001886196743894022,31.349480458202798,-0.058828709259012735,-4.870002746582031,0.7660098371270337,28.546724613784907,0.012560467467891166,-0.11688311152148012
289
+ 2024-07-01,25.402998447418213,0.0017144033988915701,38.26620978041952,-0.14569844798528364,-2.80999755859375,0.7339614148791321,31.14490933016032,0.011859880435985093,-0.156569611734501
290
+ 2024-08-01,19.89859437942505,0.0016621220225224757,34.5792194571706,-0.11495855069388872,-5.25,0.7776049397254438,33.90618552441539,0.011520972146005922,-0.06951423390916145
291
+ 2024-09-01,16.614001750946045,0.0017055497312395346,23.321928113919927,-0.21927512960866946,-3.5999984741210938,0.8286279890476776,38.66950518444417,0.011822009181362699,-0.12254902189944816
292
+ 2024-10-01,17.910998344421387,0.0015752473617217989,25.585519642201845,-0.14419115742350763,-3.9000015258789062,0.9316170264628554,39.536528506056186,0.011924551471958615,-0.3022388215717211
293
+ 2024-11-01,17.12559986114502,0.0015357546578409762,20.220042128074166,-0.14343922060378156,-4.94000244140625,0.8406969809957372,39.073529411190094,0.011548738978521203,-0.4014401169336941
294
+ 2024-12-01,16.810396194458008,0.0015160505610297987,19.741261556358147,0.031398894811244915,-2.9199981689453125,0.8709839515134509,36.65922903493001,0.011007150871559847,-0.4338919875905125
295
+ 2025-01-01,19.274999618530273,0.0015153778076166487,23.827201344109174,-0.011516388208867578,-4.230003356933594,0.8170064547835708,38.777058421294626,0.011423288302947327,-0.22860963018537295
296
+ 2025-02-01,18.376995086669922,0.001591405831724776,18.195096532389307,0.038792692447900734,-3.4199981689453125,0.8662841699949158,40.665137068769425,0.01100500540232167,-0.03759398442327189
297
+ 2025-03-01,24.84279203414917,0.0016075316710747242,17.353727620240655,0.04252188453034622,-3.2599945068359375,0.8782025994777435,43.68774345449893,0.011034008003599629,0.027960539214994196
298
+ 2025-04-01,27.339799404144287,0.0013797276680115465,17.501503157224967,-0.11938448735405216,-4.909999847412109,0.8884892604285782,56.77718694252345,0.009842964668674925,-0.0008665709631623386
299
+ 2025-05-01,24.525997161865234,0.0014146067958076167,17.635625305184135,-0.12139419878643942,-3.1100006103515625,0.8897939121796673,54.10264603976305,0.010000911936409493,-0.1890625031432136
300
+ 2025-06-01,25.965595245361328,0.001526833523224763,18.83969875654508,-0.19480295929001035,-2.5,0.855316973321552,50.59744849348672,0.010882710737293402,-0.11199996948242186
301
+ 2025-07-01,26.369796752929688,0.001314982445673455,22.298777625503828,0.05150680491599102,-3.2699966430664062,0.8694747639365044,47.548366294398754,0.011099234386120321,0.28360802545491626
302
+ 2025-08-01,28.976595401763916,0.0013007743658749688,21.358025546540425,-0.03982482148616895,-4.1100006103515625,0.8037676172314315,54.26808053723605,0.011572675051961858,0.612716723175085
303
+ 2025-09-01,25.526201725006104,0.0012510413890989812,18.882833611028758,-0.12000588549272695,-4.649997711181641,0.8140000342915754,61.58089008404732,0.012042542637998324,0.3531531478897938
304
+ 2025-10-01,28.86360216140747,0.0012720355192285906,14.786614562494425,-0.19854927932277955,-4.090000152587891,0.7930877996720291,65.30337784519655,0.012052132004839568,0.09459463203797935
305
+ 2025-11-01,27.197200298309326,0.0012292867707494343,12.072165026037062,-0.14548720877719912,-4.650001525878906,0.7723193349916919,72.04611203385612,0.013381220339713635,0.04778979422624818
306
+ 2025-12-01,20.019601345062256,0.0013015535387772281,15.577861220770469,-0.10284434527782915,-3.4300003051757812,0.7643149395035295,75.33264081363815,0.01621370471198471,0.16777632363260753
307
+ 2026-01-01,26.926799297332764,0.0012509811319995952,14.977032085049927,0.0549186510234132,-5.480003356933594,0.7744227432851064,72.28799215539173,0.016608329098499727,0.4234566901192045
308
+ 2026-02-01,28.553802967071533,0.0011479781879860079,23.441761937643253,0.14031315032340497,-5.4600067138671875,0.8099510700968775,78.0438714101768,0.017719529529973282,0.37628267557719575
309
+ 2026-03-01,48.40899848937988,0.0011699373241199076,30.868147896911474,0.682076225631427,-8.129997253417969,0.9178438990062987,49.40684935322161,0.015439020340852103,0.14253134945887402
data/live/derived_features.csv ADDED
@@ -0,0 +1,309 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ date,crack_spread_321,copper_gold_ratio,oil_gas_ratio,energy_rel_strength,spread_wti_brent_live,vix_vxn_ratio,gold_oil_ratio,silver_gold_ratio,bdi_momentum_3m
2
+ 2000-08-01,,0.0031800216646737356,6.924685567853464,,,,8.407855003441979,0.017977003241071217,
3
+ 2000-09-01,,0.003346125602308378,5.93461571852982,,,,8.865845777166784,0.017905701968351763,
4
+ 2000-10-01,,0.003195545485076891,7.264444137654342,,,,8.103395687265264,0.01794639598504465,
5
+ 2000-11-01,5.539999961853027,0.0031136616123532096,5.136778058332649,0.15472700667298078,,,7.991124621073041,0.017304700780230053,
6
+ 2000-12-01,7.894800186157227,0.00311213227754739,2.7416880082035635,-0.05065057297595399,,,10.149254019892428,0.016856617787243074,
7
+ 2001-01-01,6.509999871253967,0.003194653591301309,5.079646066093276,-0.07770832622862722,,0.35834011690827533,9.254355367029563,0.01803840278335116,
8
+ 2001-02-01,4.786999583244324,0.0030359821568271324,5.227836161934124,-0.13171337226793045,,0.37514887515655587,9.730123524467144,0.016761620414779518,
9
+ 2001-03-01,9.307000041007996,0.0029410624192350476,5.248508650517063,0.10622323770937658,,0.39706086898394044,9.768939303532957,0.01658782465745307,
10
+ 2001-04-01,13.62959909439087,0.0029034090764484826,6.061767420200116,0.07695909127357237,,0.3708339380202897,9.276177388732181,0.01636363701380687,
11
+ 2001-05-01,12.312599182128906,0.0028345269839770764,7.248339443825516,0.02183919549254565,,0.3794201455339041,9.351426857088036,0.016569921261591566,
12
+ 2001-06-01,3.9157989025115967,0.0026034737755261535,8.478682287943407,-0.060881661832198564,,0.41899315810633736,10.308571660693602,0.015861048485109067,
13
+ 2001-07-01,3.91100013256073,0.002546956957940605,7.994538939010449,-0.04354189614570547,,0.4471561845107018,10.102467109796715,0.01581517597699027,
14
+ 2001-08-01,6.087799668312073,0.002472667681310616,11.428571194796094,0.0560980382403411,,0.47143397253276675,10.088234786385435,0.015167639474677582,
15
+ 2001-09-01,4.896199584007263,0.002209302466275164,10.44117679717639,0.04239425888500303,,0.4897990352644202,12.47972642234291,0.015892612629798,
16
+ 2001-10-01,2.6549986600875854,0.0022254024293987106,6.4357341266183505,-0.0711667876128399,,0.5382518395198058,13.196411518393692,0.015076923882118289,
17
+ 2001-11-01,2.972600221633911,0.0026359986087887755,7.197334581755655,-0.2904723986791323,,0.4920536589615829,14.089505471079585,0.015071193408303941,
18
+ 2001-12-01,3.8997997045516968,0.002343021056818453,7.719844614872869,-0.2561485901907471,,0.5035971240336015,14.047379538786485,0.01642985215503823,
19
+ 2002-01-01,3.8187997341156006,0.0025895071500396153,9.060464497257039,-0.14671211299516373,,0.4967027933781483,14.481520160069197,0.01494505490562326,
20
+ 2002-02-01,2.59399950504303,0.0024064710389965823,9.27813171771774,0.15268676608739573,,0.4674172070582448,13.578947689404798,0.015156724072814234,
21
+ 2002-03-01,6.320001125335693,0.0025132187656519973,8.083205072173353,0.32267753206357586,,0.47960309270958285,11.536409125921777,0.01533707766153641,
22
+ 2002-04-01,5.021998643875122,0.002371317679379423,7.248340012721879,0.4480661232539299,,0.5006855732928596,11.319163925326535,0.014671415197094187,
23
+ 2002-05-01,4.4839993715286255,0.00233231240720166,7.880012531386382,0.19595508250274685,,0.4353889694386855,12.879684223822908,0.01539356821706827,
24
+ 2002-06-01,4.880799293518066,0.0024481658159752834,8.277350246330284,0.16134741400904273,,0.43830887461067874,11.671630411933377,0.01541626852660304,
25
+ 2002-07-01,5.697998881340027,0.002234498622222672,9.1469195949592,0.14359958436152487,,0.5535775741594601,11.221317803815628,0.015155011890431372,
26
+ 2002-08-01,4.292400002479553,0.0021991036813541736,8.792475576426948,0.2847605413274157,,0.5936704194400786,10.77984813044608,0.014202944572646403,
27
+ 2002-09-01,3.2560003995895386,0.002037666065640422,7.359903451364182,0.31073561206523115,,0.6802056497676132,10.630128033639117,0.013985798997088319,
28
+ 2002-10-01,8.673201203346252,0.002245282976875202,6.54956650802667,0.03576894887989712,,0.5876580185449388,11.682586627851324,0.01414779897001604,
29
+ 2002-11-01,4.269800901412964,0.002365845976996746,6.4023810962865095,-0.09421307955467884,,0.5557801183076024,11.781331162958026,0.013933081453282523,
30
+ 2002-12-01,5.1313982009887695,0.0020051784075438375,6.514930159271695,-0.05520491757242918,,0.6097145648900558,11.14102556386047,0.013811852801901451,
31
+ 2003-01-01,7.230002045631409,0.002149063259774581,5.978590223286718,0.26501701252445153,,0.6658833403370318,10.990749216042545,0.013176758959728248,
32
+ 2003-02-01,10.038203477859497,0.0022130209855554333,4.517960650281179,0.4627337328538841,,0.6489268344094624,9.568306743102196,0.013092518213344093,
33
+ 2003-03-01,6.496799468994141,0.0021211669815498564,6.134387600870638,0.030833717535811878,,0.6771196314623563,10.821520102392567,0.01328073845404477,
34
+ 2003-04-01,8.458001136779785,0.0021380124175474128,4.791086004768227,-0.30162428724706214,,0.649219475744714,13.143411477441836,0.013677381090977013,
35
+ 2003-05-01,5.294399738311768,0.002139917616975667,4.729599913794045,-0.3379123289737782,,0.6149715542191009,12.330852725746109,0.012417009664954093,
36
+ 2003-06-01,5.098398923873901,0.0021618497853960828,5.579375676254363,-0.17631469353439666,,0.6250400494159225,11.460748389130151,0.013170520694231545,
37
+ 2003-07-01,5.810998797416687,0.002310734515803216,6.473082095979798,0.10368128513498265,,0.6242793145148133,11.591355251349245,0.014451977896784244,
38
+ 2003-08-01,10.49580204486847,0.0021373434847068488,6.673007830168733,0.021898877272767514,,0.6310975227385496,11.900538987231137,0.013598616023373231,
39
+ 2003-09-01,6.407599091529846,0.0021094967209088155,6.045548906445689,-0.05482408829646179,,0.692049894775548,13.198629582655155,0.013329009250814289,
40
+ 2003-10-01,4.386398553848267,0.002436931018550175,5.9493153189194015,-0.10781481216725586,,0.6468461541031113,13.208519131739992,0.013157347243811787,
41
+ 2003-11-01,4.703400611877441,0.00228578637385481,6.174619017974086,-0.08653485367878533,,0.636753813053942,13.048339025680333,0.013495464172881916,
42
+ 2003-12-01,6.83539879322052,0.0025090208135762756,5.254483724511906,-0.002720629500118532,,0.747652088048947,12.782903024068258,0.014320423126871248,
43
+ 2004-01-01,7.709601044654846,0.0028418696468972817,6.123772509807544,0.05880986131077304,,0.6636073230050894,12.169440891963946,0.015529586333898953,
44
+ 2004-02-01,7.952601075172424,0.003387992116636506,6.676514139463279,0.1071131630642237,,0.637040284277285,10.962389257694964,0.01689202876454591,
45
+ 2004-03-01,8.849600791931152,0.0031792652530327832,6.027304531717855,0.08677936037521539,,0.7045454380957897,11.94910536457484,0.018572431773919904,
46
+ 2004-04-01,10.970398783683777,0.0031253228815870332,6.376663448432906,0.15208106336599647,,0.6680917543419223,10.353129719938773,0.015705426533976344,
47
+ 2004-05-01,14.336398363113403,0.0032436548150653133,6.190624278962718,0.12406492664397417,,0.7266760456968733,9.879638651893877,0.015494923906238557,
48
+ 2004-06-01,9.506999254226685,0.0030692817732523325,6.019496014313652,0.023083375542750195,,0.7403200583658365,10.596491610726064,0.014712175071516762,
49
+ 2004-07-01,8.781200885772705,0.0033452684617017964,7.16623025391121,0.17678889990231983,,0.6572286591662361,8.926940794561379,0.01675191864633788,
50
+ 2004-08-01,5.208400726318359,0.00312134511980475,8.301143063705243,0.07083817123009517,,0.6671029629271382,9.74358984553698,0.016498538033942134,
51
+ 2004-09-01,7.487002372741699,0.0033436826733660367,7.305371423839214,0.3628292134865313,,0.6513672094779672,8.43473040585712,0.016517792423510994,
52
+ 2004-10-01,5.796801328659058,0.003144690703893242,5.932377771069146,0.15588467079369717,,0.7429224082385003,8.278593776798033,0.017017502489795833,
53
+ 2004-11-01,5.759799957275391,0.0031974296432969876,6.4475067978381,0.10341767980940308,,0.7027600670479155,9.185833054595049,0.017112785859672644,
54
+ 2004-12-01,4.24940037727356,0.00339885711669145,7.06618955437255,-0.21203122579815137,,0.7152852538056876,10.069044702137159,0.015558857509032518,
55
+ 2005-01-01,7.32680082321167,0.003468468709018599,7.62537573153189,-0.11396569002710022,,0.6956049637464365,8.75103695244204,0.015972025091301436,
56
+ 2005-02-01,4.006399631500244,0.0034364261168306153,7.689450199947388,0.027957697569111595,,0.6685113518013844,8.434782608532661,0.016859107001092312,
57
+ 2005-03-01,14.143597841262817,0.0035199437853082145,7.238991559167108,0.300880386311728,,0.7943343206789707,7.738267155083653,0.01677396729639397,
58
+ 2005-04-01,12.193597078323364,0.0034436782201052022,7.550493686427358,0.05220798142712735,,0.8257820745827857,8.748994153486052,0.015866666552627744,
59
+ 2005-05-01,9.499800205230713,0.0036151814541403944,8.147044942735395,0.014304385049553114,,0.824953411391463,8.010390186774101,0.017881335540628412,
60
+ 2005-06-01,10.186200857162476,0.0035638909796179975,8.093396422309212,0.010758429244408507,,0.832641765508826,7.715044139624236,0.016122963928241172,
61
+ 2005-07-01,11.020400524139404,0.003925331528156308,7.68167380202244,0.1513766257503344,,0.8341744621091374,7.097572990843556,0.0168364736422924,
62
+ 2005-08-01,33.0079984664917,0.003907330797937043,6.00941437428746,0.3023382007546669,,0.8565601868074771,6.292427798437826,0.01563162823450725,
63
+ 2005-09-01,22.569000720977783,0.0038411513066159073,4.758278867163568,0.14092861905844023,,0.8955672201054408,7.080314237894062,0.015901919366928714,
64
+ 2005-10-01,7.748002052307129,0.004076542684952132,4.896353845981073,0.008641671991950983,,0.8515842072754192,7.782798178696472,0.016233068354418068,
65
+ 2005-11-01,5.206801891326904,0.0041953093855102794,4.538400567767782,-0.19243940050255948,,0.7877204499208572,8.628751024566865,0.016740799900478602,
66
+ 2005-12-01,11.871999979019165,0.004180042698045755,5.437861811644527,-0.09435509084249227,,0.8464235273665375,8.471493575058684,0.017056662369424838,
67
+ 2006-01-01,6.4690024852752686,0.003916433330551661,7.290682511045687,0.07600820729823354,,0.6969859990174361,8.404004758138354,0.017256483167664507,
68
+ 2006-02-01,5.798399209976196,0.00389155983181056,9.146559097360093,0.046399381852764376,,0.7717323532490103,9.145090001176069,0.017307693535545964,
69
+ 2006-03-01,17.241204738616943,0.00427638358245846,9.241331052933125,0.05426422028637412,,0.6983446177547928,8.731802667970122,0.019731866247996055,
70
+ 2006-04-01,18.18060541152954,0.005117367389337366,10.9656749236972,0.03445377944207495,,0.7472598311287189,9.067891105865437,0.020727217677015807,
71
+ 2006-05-01,20.201402187347412,0.005784435865934995,11.166980398480302,0.16913947692091946,,0.7660764787817104,9.012484103518192,0.019296497686333812,
72
+ 2006-06-01,20.52559757232666,0.005643846936205033,12.157765469349856,0.12936290664589323,,0.7311347327682586,8.292781456520553,0.017783210835198578,
73
+ 2006-07-01,18.939401149749756,0.00569221038411407,9.061015407048389,0.06096242291090026,,0.7353664468585233,8.524193537521773,0.017857142212653086,
74
+ 2006-08-01,8.078399658203125,0.005542418862072175,11.617064114465933,-0.041005170318549555,,0.7078781397908769,8.90834052625798,0.02061031972412211,
75
+ 2006-09-01,4.444000005722046,0.005778483547772637,11.193950376737387,-0.2013198724040669,,0.6776017723286808,9.515180051316541,0.01912796571372763,
76
+ 2006-10-01,3.9913992881774902,0.00552226469207601,7.795327868186107,-0.2899502340750063,,0.6416185474187406,10.286054491473413,0.020215196799707565,
77
+ 2006-11-01,9.92339825630188,0.0049026122242657125,7.138173003307999,-0.17573132337865782,,0.6600120625261815,10.247109353060697,0.021525737618152165,
78
+ 2006-12-01,6.179401636123657,0.004493073105637842,9.692014811526633,-0.0912871140727528,,0.7122612905084277,10.404586734393062,0.02017947039268122,
79
+ 2007-01-01,7.049601793289185,0.003962423172459054,7.5831486592645465,-0.05380698960026764,,0.6061663613705652,11.214310403052247,0.020726993771386683,
80
+ 2007-02-01,14.868399143218994,0.004082760592132456,8.464383464741088,-0.025645441533823865,,0.7510959356944081,10.833468433158966,0.021063638881385818,
81
+ 2007-03-01,19.563598155975342,0.004741327435355422,8.52134574068938,0.07714680445156663,,0.8026316077975832,10.065279677316205,0.020196078949174294,
82
+ 2007-04-01,29.41300082206726,0.005204261706903057,8.356861220583937,0.09951961570343526,,0.8238702246602554,10.35611032523126,0.019757530778551743,
83
+ 2007-05-01,25.381396293640137,0.005133888184024587,8.066793016981634,-0.05207176140031122,,0.7740213355596507,10.326511137788872,0.02028593100863575,
84
+ 2007-06-01,22.004197120666504,0.005328653236404368,10.435553338677956,0.014966198093908423,,0.9087345457267662,9.169495936310977,0.019060330431285084,
85
+ 2007-07-01,11.132399559020996,0.005478332503156114,12.632854024325933,0.2085113194855358,1.1599960327148438,0.9987261664005325,8.527042989544514,0.019418202631831617,
86
+ 2007-08-01,12.003997802734375,0.005068350688479007,13.54060017924153,0.1936923247387793,1.3499984741210938,0.9531185693175255,9.089681140857087,0.017924219502710063,
87
+ 2007-09-01,7.582996845245361,0.0048875876923254475,11.886463611429507,0.13978284023377285,2.4900054931640625,0.8567348787744985,9.096252197800661,0.018570274500007252,
88
+ 2007-10-01,6.099200248718262,0.0043787877969012215,11.348139211733859,0.1440005655897718,3.9000015258789062,0.8018174035678575,8.37829271362562,0.018152777594726454,
89
+ 2007-11-01,9.959198474884033,0.004036052180487858,12.148726173130564,0.1932853196719868,0.4499969482421875,0.7982548391952949,8.81749543761551,0.01785093336694149,
90
+ 2007-12-01,10.363996028900146,0.003629775837260681,12.826407308353328,0.2136058892745274,2.1300048828125,0.8687258814874093,8.698687176541451,0.017723080007935495,
91
+ 2008-01-01,8.38779592514038,0.0035650806920667984,11.363635857548463,0.08084833651365098,-0.45999908447265625,0.8429858695756495,10.056675882255853,0.018367833239393682,
92
+ 2008-02-01,8.260203838348389,0.003962555390217842,10.873371174354128,0.2496280198994726,1.7399978637695312,0.9331927009921055,9.545365382291479,0.02037650556735737,
93
+ 2008-03-01,14.365201950073242,0.004216874117851871,10.056430403815138,0.15754460145815163,1.279998779296875,0.881887045526101,9.019491983489157,0.01885505281417507,
94
+ 2008-04-01,13.091602325439453,0.004559573563877013,10.463893273357703,0.23151448869039104,2.0999984741210938,0.8517001656958122,7.604442047835703,0.01912610227418825,
95
+ 2008-05-01,19.336402893066406,0.004088808825525711,10.881824977872652,0.1980722173231595,-0.43000030517578125,0.8551558559537088,6.967412629897364,0.0189642735216783,
96
+ 2008-06-01,12.682596683502197,0.004205894939906276,10.484535555240953,0.4105064518461796,0.1699981689453125,0.8047715247962735,6.615714372860111,0.018808032656753286,
97
+ 2008-07-01,9.405800342559814,0.0040666374270508935,13.606754677070276,0.17891510547173994,0.09999847412109375,0.8742378328231913,7.36540950129134,0.019422255745491206,
98
+ 2008-08-01,13.36380386352539,0.004135415595651559,14.536069671266047,-0.00942320299316557,1.4099960327148438,0.8597002174908844,7.182574002785632,0.016407814483572224,
99
+ 2008-09-01,9.021999835968018,0.0033035918223675814,13.530518505045956,-0.1923616000584193,2.470001220703125,0.9250821440781438,8.686407169118711,0.013991077300149542,
100
+ 2008-10-01,0.6346030235290527,0.002572544661384973,9.997051102000317,-0.2178699375445602,2.4899978637695312,0.9932006657778975,10.570712484733837,0.013574218342527429,
101
+ 2008-11-01,1.095397710800171,0.0019890957672465564,8.36098285455264,-0.22722418114212584,0.9399986267089844,0.9862622574624265,14.995407084618792,0.012478559504138759,
102
+ 2008-12-01,3.3094024658203125,0.0015787686956417978,7.9331193065151915,-0.3312541171897313,-0.9900016784667969,0.9806324859334031,19.81165932278742,0.012754640979112176,
103
+ 2009-01-01,14.202400207519531,0.001576620329604274,9.436269418965825,-0.23786266380697918,-4.200000762939453,0.9979968806371114,22.248080157896965,0.013544700296499228,
104
+ 2009-02-01,8.822201013565063,0.0016208178681747878,10.662219818710975,0.002147294824099255,-2.44000244140625,1.0236307359241763,21.034406507697017,0.013898035090953876,
105
+ 2009-03-01,8.353198766708374,0.001993279899534605,13.151482927237042,0.23012054413782534,0.43000030517578125,0.9986425028675573,18.57833222718864,0.014063516935620253,
106
+ 2009-04-01,8.563401460647583,0.0023049286461866826,15.155647890061436,0.16966326262342468,-0.8400001525878906,0.9961790558685389,17.423709522694388,0.013814977137669372,
107
+ 2009-05-01,10.744601488113403,0.002245096054216356,17.290742342037426,0.23107917969729308,0.7900009155273438,0.9823369412597515,14.760971555055587,0.01593788371067433,
108
+ 2009-06-01,7.2836010456085205,0.002435551673457501,18.224249980762508,0.2551523127580626,0.589996337890625,0.987261140997682,13.265130686350917,0.014641355534485893,
109
+ 2009-07-01,12.917604207992554,0.002743525078457409,19.011769700860654,0.22718780843846753,-2.25,0.990825696731312,13.732182204472187,0.014609415363897116,
110
+ 2009-08-01,10.554001569747925,0.002950509668717162,23.500167653945415,-0.05536301883041972,0.30999755859375,0.9573058577433894,13.603488059573943,0.015654092226944544,
111
+ 2009-09-01,2.859200954437256,0.0027867063643412723,14.585829255797304,-0.1395479115391589,1.5400009155273438,0.9664151173352886,14.275598233573016,0.016503967936060442,
112
+ 2009-10-01,5.144999265670776,0.0028349525140769815,15.262636039700821,0.059383809078538574,1.8000030517578125,1.0295203315280534,13.50259676829055,0.0156256622611072,
113
+ 2009-11-01,6.995798587799072,0.002665735357502742,15.940593641263463,0.03113666239296209,-1.19000244140625,0.991103949922447,15.283385018467001,0.015659132352485627,
114
+ 2009-12-01,7.77319860458374,0.003038258083686616,14.242641819057672,0.06903305546073613,1.4300003051757812,1.001385712987193,13.800402504220985,0.01535975278808675,
115
+ 2010-01-01,7.037400722503662,0.002812557713584381,14.205807596831654,-0.0897406724942098,1.4300003051757812,0.9542636266017249,14.858005337546285,0.014942752137174749,
116
+ 2010-02-01,6.894994735717773,0.002922739825566089,16.55100774969726,0.022710506929711993,2.07000732421875,0.9858442528861794,14.038413223749458,0.01475453749400773,
117
+ 2010-03-01,11.224394798278809,0.003185125166880286,21.649005692171077,0.006721408355144121,1.0600051879882812,0.9601528626988612,13.29154752174098,0.015729810798685104,
118
+ 2010-04-01,12.985401630401611,0.0028281502960861298,21.97704077224151,0.07685876733071417,-1.2900009155273438,0.9995466804114469,13.698200286366156,0.01577069777649876,
119
+ 2010-05-01,10.30719804763794,0.0025548589410973026,17.03985253135771,-0.057775278085391846,-0.04999542236328125,1.0145523275727957,16.387723822508335,0.015188087807033793,
120
+ 2010-06-01,9.810603141784668,0.002357286317716993,16.384314203201587,0.021558873531895895,0.6199951171875,0.9829254841910793,16.468333270066903,0.014990766380539982,
121
+ 2010-07-01,8.632605075836182,0.0027985106697486135,16.036969164274623,-0.011871590246220864,0.7699966430664062,0.9584012871256242,14.967701036538388,0.01522129157563735,
122
+ 2010-08-01,8.904802322387695,0.002692461691552197,18.84695975830192,0.009076648032686818,-2.720001220703125,0.9489981243017647,17.356786437597236,0.015539533732581311,
123
+ 2010-09-01,8.700399398803711,0.002787887882181633,20.653409512751935,-0.049813255247979304,-2.339996337890625,0.9495192961258339,16.353632972975372,0.01666768582491577,
124
+ 2010-10-01,8.577400207519531,0.0027499817107575304,20.165923261777333,-0.042716242984099706,-1.720001220703125,0.9532374541441077,16.665847605099575,0.018097413534563164,
125
+ 2010-11-01,11.752196788787842,0.0027602887756107385,20.122010536938177,0.04444260354200824,-1.80999755859375,0.9271367262890727,16.466531802795863,0.0203501801197993,
126
+ 2010-12-01,12.92140531539917,0.0031239884113064727,20.744606783264846,0.040645444889011006,-3.3700027465820312,0.9111909864578511,15.55154320730986,0.021750756722549218,
127
+ 2011-01-01,16.001999855041504,0.003337082059286437,20.85746625096163,0.04520874067022751,-8.819999694824219,0.8962826922982061,14.467946778300481,0.021123105979122935,
128
+ 2011-02-01,20.41999864578247,0.0031774639955149337,24.020311342596646,0.028656393590916984,-14.830001831054688,0.8929440906004408,14.533361153683327,0.023986375990391284,
129
+ 2011-03-01,23.549996376037598,0.0029883939938654784,24.315334399744366,0.11364992317884792,-10.639999389648438,0.8986828761860014,13.482946101404657,0.026320106334937924,
130
+ 2011-04-01,28.66559648513794,0.0026770566606872143,24.25074529396255,0.1755663242483536,-11.959999084472656,0.8917774596530577,13.657508960049165,0.031223650150229973,
131
+ 2011-05-01,28.299399852752686,0.0027172992998841876,22.01028704696673,0.04554329644030575,-14.030006408691406,0.9397809797097424,14.955210029588962,0.024938473074376077,
132
+ 2011-06-01,30.522600650787354,0.0028436395507658832,21.815271277086325,-0.1019701001581752,-17.06000518798828,0.9249719984479616,15.744079623146632,0.02317246831070149,
133
+ 2011-07-01,34.808003425598145,0.0027476508278243754,23.08805726550636,-0.10770091549770489,-21.040000915527344,0.9681748494209242,17.014630101730834,0.024621997083881658,
134
+ 2011-08-01,39.180805683135986,0.0022898549618915807,21.90675868511247,-0.04135151954588123,-26.040000915527344,1.007969397268213,20.58889821242288,0.022805032164196364,
135
+ 2011-09-01,33.455201625823975,0.001940878754344506,21.603927800490766,-0.026706351616877066,-23.56000518798828,0.955091140967621,20.45959705595124,0.018539249514671688,
136
+ 2011-10-01,23.41179847717285,0.0021047442589433927,23.688358428129696,0.003935987176513334,-16.3699951171875,1.0395558431880765,18.50198418266459,0.019914744677483377,
137
+ 2011-11-01,13.835196495056152,0.0020412489050463103,28.27042307890703,0.10702385477635401,-10.459999084472656,1.001080258473219,17.39238729939355,0.018751646515554953,
138
+ 2011-12-01,17.476398468017578,0.0021915313903613297,33.06456978459908,0.13633009915806782,-8.549995422363281,1.0116731719216825,15.843367598929566,0.01780240077323052,
139
+ 2012-01-01,25.24639320373535,0.0021794796859307642,39.34478725213836,0.009602280869657642,-12.5,0.977375622404373,17.64622247738913,0.019123605003565126,
140
+ 2012-02-01,22.746399402618408,0.002263582684643853,40.9288999350393,-0.02834832516344421,-15.590003967285156,0.9293999180612188,15.969926489882575,0.020225159184342326,
141
+ 2012-03-01,36.25480318069458,0.0022907804288549577,48.457196663570265,-0.07757062118623792,-19.860000610351562,0.9016869992754801,16.203650778552717,0.019450668436027323,
142
+ 2012-04-01,28.860798358917236,0.0023046169605506184,45.89496663522559,-0.0002610597766994349,-14.599998474121094,0.9136920191455283,15.861542679824286,0.018611878790055835,
143
+ 2012-05-01,30.456800937652588,0.0021518622839177223,35.72667266586545,-0.15130779494077495,-15.340003967285156,0.929316339599179,18.058476801247174,0.01775310358070484,
144
+ 2012-06-01,29.14560317993164,0.0021764889364107058,30.084986760660865,-0.1424261427197453,-12.840003967285156,0.9158177089623039,18.873587773780745,0.0171998752252503,
145
+ 2012-07-01,33.332600593566895,0.002123253717809032,27.441568867371494,-0.14699525560698645,-16.860000610351562,0.9325123653051105,18.28866732491231,0.017320708138929743,
146
+ 2012-08-01,34.861202239990234,0.002050338386703278,34.46588079015269,0.04141870309769802,-18.099998474121094,0.952043539467393,17.462423077143573,0.018621632015816493,
147
+ 2012-09-01,45.75759744644165,0.0021303145242588506,27.76807357450514,0.027462503752299305,-20.199996948242188,0.9247501075633789,19.211410442172344,0.01948901742804033,
148
+ 2012-10-01,34.04520511627197,0.002053566201110266,23.35861318793331,-0.04447662164308097,-22.459999084472656,0.914904104788808,19.915352997725748,0.018799416710011115,
149
+ 2012-11-01,30.987396717071533,0.0021213980130153124,24.967705959753115,-0.08519143989577138,-22.31999969482422,0.9357311757848366,19.24305425626645,0.019407328360420067,
150
+ 2012-12-01,29.547400951385498,0.0021739908802668106,27.400775211488718,0.006037469803802598,-19.290000915527344,0.8764591889575349,18.24003544300046,0.018015882168613325,
151
+ 2013-01-01,31.04960298538208,0.002242261874076791,29.197363948607077,0.06958573849526473,-18.06000518798828,0.9629130010433385,17.033542024376608,0.0188696853818737,
152
+ 2013-02-01,31.165393829345703,0.002235849669353757,26.405622895490783,-0.03423669874776447,-19.329994201660156,0.9515338008523301,17.139596945669055,0.017997719044520855,
153
+ 2013-03-01,30.81959629058838,0.0021287935019935976,24.16252467126529,-0.04134748401730359,-12.789993286132812,0.9563253059996399,16.402344890981592,0.017740154847415535,
154
+ 2013-04-01,25.192800045013428,0.0021651270925940303,21.519686957978706,-0.10772785451148015,-8.910003662109375,0.8813559532202132,15.752193083433408,0.016399945591966877,
155
+ 2013-05-01,24.93980073928833,0.002361769418347192,23.08483984591931,-0.0774925133389388,-8.419998168945312,1.019387083762373,15.141893629303453,0.01596151158303786,
156
+ 2013-06-01,20.8132061958313,0.0024926456891346234,27.085552870030977,-0.03052739198802612,-5.600006103515625,1.0236794967961633,12.673985912984666,0.015893936458192544,
157
+ 2013-07-01,22.811001300811768,0.0023761809938001727,30.4788147782543,0.06861244076714401,-2.6699981689453125,0.9438596356716685,12.495477860181243,0.014947424729420662,
158
+ 2013-08-01,20.816800594329834,0.002310006418613924,30.061435018416233,0.1691229129794236,-6.3600006103515625,0.9703365408804491,12.968880220938484,0.016806102538615073,
159
+ 2013-09-01,13.03559923171997,0.002503580926633717,28.74438299075199,0.012895801644567273,-6.040000915527344,0.9922295776858429,12.962962730881886,0.01632566915741634,
160
+ 2013-10-01,18.912798404693604,0.0024890451596394562,26.914268308786298,-0.1243630130459461,-12.459999084472656,0.9240591326159788,13.73313979343639,0.016494410044651662,
161
+ 2013-11-01,25.103997230529785,0.0025831601198598366,23.449671544437745,-0.24453420935445824,-16.970001220703125,0.9834888376270404,13.487920180195246,0.015977132008891153,
162
+ 2013-12-01,22.66320037841797,0.0028633828759396913,23.267138936617663,-0.13740985087108626,-12.3800048828125,0.8886010776562214,12.211949266029237,0.016090357191993695,
163
+ 2014-01-01,21.983200550079346,0.0025969680314253275,19.722840583448647,-0.0033133304581898226,-8.910003662109375,0.9704797318301095,12.720279031148475,0.015406015578053664,
164
+ 2014-02-01,18.774600505828857,0.002450809791447662,22.258622636254508,0.0767454101441527,-6.480003356933594,0.9327115113648611,12.880398397218148,0.016046617285638942,
165
+ 2014-03-01,20.97599744796753,0.0023737727206009536,23.239534694978914,0.019133680396293595,-6.180000305175781,0.7660043858067577,12.634376858310624,0.015376343210927968,
166
+ 2014-04-01,25.564201831817627,0.0023382989076215126,20.7144333660988,-0.033781786336266606,-8.330001831054688,0.7584841411302395,12.989773444175832,0.014756869281770257,
167
+ 2014-05-01,21.57640027999878,0.002517662154341564,22.613386878576414,-0.03331358177454624,-6.700004577636719,0.8278866549546806,12.127348716548822,0.014975112591135233,
168
+ 2014-06-01,22.377193450927734,0.0024118624950758365,23.620265306859274,-0.009630766816892455,-6.989997863769531,0.9475839195519391,12.54436760331637,0.0158927214355082,
169
+ 2014-07-01,21.51320171356201,0.002515413975466792,25.558447304330734,-0.04053993320562266,-7.849998474121094,1.0077289577566109,13.051849574347798,0.015900256313812984,
170
+ 2014-08-01,21.952202320098877,0.0024381706886059383,23.606395500638985,-0.1072044049827684,-7.230003356933594,0.9512195212706944,13.39933369197772,0.015086327563004287,
171
+ 2014-09-01,18.33399772644043,0.002482858387607444,22.120846341863817,-0.14101047602416783,-3.5099945068359375,0.8932091599457733,13.27884983938263,0.014048740618574787,
172
+ 2014-10-01,15.409000873565674,0.002613782061761845,20.795249893689096,-0.22484530833101568,-5.319999694824219,0.8874129892289987,14.540600475032027,0.013728118862139923,
173
+ 2014-11-01,18.390398025512695,0.002433628330431331,16.181507928300498,-0.3426912911277632,-4.0,0.9043419355352208,17.765682903187127,0.013179885095277797,
174
+ 2014-12-01,12.770800113677979,0.0023975842253154953,18.438906737537668,-0.45955619450490137,-4.060001373291016,0.9775968105213644,22.224516880387867,0.013147224646839251,
175
+ 2015-01-01,14.993798732757568,0.0019773172595590844,17.926422123402403,-0.389616044754005,-4.75,0.9712829626761089,26.502901233193562,0.013447007771146937,
176
+ 2015-02-01,31.917401790618896,0.002239815384124522,18.200438512611797,-0.26563670370057046,-12.820003509521484,0.9124487179272853,24.368971391962983,0.0136178466276881,
177
+ 2015-03-01,26.29060125350952,0.002321866313670047,18.030301729029116,-0.110805337223717,-7.510002136230469,0.8843261510320375,24.85504230014427,0.014014875933171913,
178
+ 2015-04-01,25.429799556732178,0.002441221094504245,21.675755222639737,0.1907374192103315,-7.149997711181641,0.8812840695423176,19.82894521574099,0.01363667136026406,
179
+ 2015-05-01,25.476598501205444,0.0023200773247503345,22.823618519463086,0.2104435490425045,-5.259998321533203,0.9383050950270906,19.724710438525666,0.014027240350414359,
180
+ 2015-06-01,25.45120143890381,0.002239436712519533,20.99929408164797,0.2516812447655,-4.119998931884766,0.942605966776808,19.699007498464116,0.01327443417960323,
181
+ 2015-07-01,26.603999853134155,0.0021622979395054917,17.349041798500565,-0.21858301450187756,-5.090000152587891,0.8307059463997744,23.23641870140066,0.013467896576032017,
182
+ 2015-08-01,20.16160011291504,0.0020661011926190044,18.296765613182004,-0.11991971977640536,-4.950000762939453,0.9502005425043795,22.999999146653064,0.012881760320599029,
183
+ 2015-09-01,14.989599227905273,0.0021026445471703297,17.864501345267502,-0.17245095833350843,-3.279998779296875,0.9134974003677773,24.73940998448273,0.013010308861133055,
184
+ 2015-10-01,13.741599321365356,0.0020267191655880205,20.073243490567695,0.00038800396797278314,-2.970001220703125,0.8710982866212931,24.500965791735318,0.013636443263011454,
185
+ 2015-11-01,15.110199451446533,0.001918277368048193,18.635348305221203,-0.20833355133145925,-2.9599990844726562,0.8911601557969514,25.58943600855114,0.013182585426009337,
186
+ 2015-12-01,13.848598718643188,0.0020046212070890094,15.849380655787101,-0.24306721092043693,-0.23999786376953125,0.9276617352047736,28.625810545134637,0.012991605191136056,
187
+ 2016-01-01,12.038198947906494,0.001848799575548702,14.630112051398484,-0.21148069051290053,-1.1200027465820312,0.8544839798485871,33.20642652733927,0.012745431548165735,
188
+ 2016-02-01,10.705600261688232,0.001725018188365981,19.72530722237836,-0.11844958507746028,-2.220001220703125,0.8726114608041463,36.56000072229637,0.012072290796419104,
189
+ 2016-03-01,18.189199209213257,0.0017675417633627555,19.571209954567493,0.027366978444034462,-1.2599983215332031,0.8278931449626749,32.19092191517317,0.012526333373660523,
190
+ 2016-04-01,17.745002031326294,0.0017677630547500824,21.083562309850137,0.3013976733485626,-2.210002899169922,0.8134715248228593,28.074912947528336,0.013798479856682607,
191
+ 2016-05-01,17.082200527191162,0.0017266216673701542,21.45978853169082,0.3695661333811211,-0.5900001525878906,0.9304917757018235,24.74134595836419,0.013147842838387101,
192
+ 2016-06-01,14.494997501373291,0.0016645175431152322,16.528728250577068,0.24157067764123075,-1.3499984741210938,0.8890785086111005,27.27912216919551,0.01409435709064568,
193
+ 2016-07-01,13.252001285552979,0.0016460340936760263,14.464533904045584,-0.14651457704404847,-0.8600006103515625,0.8496778566800958,32.42788580405286,0.015057079521603518,
194
+ 2016-08-01,14.5843985080719,0.001583518196358349,15.483200363025412,-0.12490234043053339,-2.3400001525878906,0.8748370235938443,29.237136511826858,0.014248985685753087,
195
+ 2016-09-01,14.797799587249756,0.00167669216542588,16.600138795583625,-0.03493249033069079,-0.8199996948242188,0.8601941828518999,27.22429525509588,0.014573211929770544,
196
+ 2016-10-01,14.662997961044312,0.0017306331194985145,15.485789900999395,0.1482725960984429,-1.4399986267089844,0.8830227605867764,27.134015864523626,0.013969326881820726,
197
+ 2016-11-01,14.29500150680542,0.002239067224057991,14.749402935588256,0.09320707758222779,-1.0300025939941406,0.8810310523462671,23.681231418399395,0.01401264046216615,
198
+ 2016-12-01,16.762998819351196,0.0021717390806759735,14.425349499583197,0.08105656041581999,-2.4099998474121094,0.8417266009674297,21.407296609207723,0.013857391191553423,
199
+ 2017-01-01,12.470598220825195,0.00225177889695861,16.94257286214861,0.055144512349091235,-2.8899993896484375,0.8390482716785351,22.885816022233787,0.014489491547229758,
200
+ 2017-02-01,11.017200946807861,0.0021587099224700808,19.470079191097184,0.01747207338594814,-1.5800018310546875,0.9499999788932142,23.192001749486217,0.014705413089013344,
201
+ 2017-03-01,19.03320074081421,0.0021217830570202925,15.862068197687837,-0.11341586705287943,-2.2300033569335938,1.0527659476175588,24.650199336298304,0.014619578206117494,
202
+ 2017-04-01,15.06999683380127,0.0020507858541642214,15.057998007126516,-0.11211680072039543,-2.3999977111816406,0.9384215042906655,25.665921925087474,0.013577916686059347,
203
+ 2017-05-01,18.03580141067505,0.0020259433197509385,15.734287892715649,-0.12572625909942292,-1.9900016784667969,0.8044822398904026,26.32450347697178,0.013654088074295538,
204
+ 2017-06-01,17.04259943962097,0.002175384853681126,15.169686852828002,-0.11580500398158233,-1.8799972534179688,0.6348665483843909,26.948304224001248,0.013353753079295884,
205
+ 2017-07-01,20.719004154205322,0.0022801200592995462,17.956334917928256,-0.01908468120840756,-2.4800033569335938,0.6465028545823386,25.246163479924206,0.01322438048543157,
206
+ 2017-08-01,37.292200326919556,0.0023393102191210267,15.536184249788993,-0.047373379586280295,-5.150001525878906,0.7390090864082903,27.867879820048913,0.013280656580073399,
207
+ 2017-09-01,18.67580246925354,0.002292235661332585,17.183238668491153,0.08269185523736633,-5.870002746582031,0.6866425968420093,24.801626579994835,0.012959032657775411,
208
+ 2017-10-01,21.83179998397827,0.002440410424330666,18.777625265359305,0.041426001009496005,-6.989997863769531,0.6759628167898096,23.299006529802817,0.013137332642265616,
209
+ 2017-11-01,17.492997646331787,0.002385328351665817,18.97520651149983,0.1441500382369243,-6.1699981689453125,0.7080978980645803,22.18118322829084,0.01286679280374719,
210
+ 2017-12-01,19.01460361480713,0.0025105258248814327,20.460547491896534,0.10811805502079253,-6.180000305175781,0.7040816164719572,21.620325858896123,0.013059786288176105,
211
+ 2018-01-01,17.6487979888916,0.002377893962103369,21.612689752486464,0.09381281929082608,-4.319999694824219,0.689058535573483,20.68592508169376,0.012848394677378352,
212
+ 2018-02-01,14.365999221801758,0.002362219746325795,23.11211026926645,0.04884470632055615,-4.1399993896484375,0.9018627975532871,21.34166146989901,0.012408969521014685,
213
+ 2018-03-01,19.958796501159668,0.0022822799682219747,23.76143485762776,0.0870553499875405,-5.329994201660156,0.7485007152991642,20.369571898327,0.012264135904072332,
214
+ 2018-04-01,21.39119815826416,0.0023191765102381586,24.817227428880333,0.12156543365254957,-6.599998474121094,0.7564102900468209,19.194982601874344,0.012393253973397024,
215
+ 2018-05-01,24.128000259399414,0.0023521268711334956,22.710028151060403,0.09075971191439858,-10.549995422363281,0.9195470603607494,19.392899132037815,0.012615953184555148,
216
+ 2018-06-01,17.795000076293945,0.0023583472069435285,25.359097425351397,0.11247681367079165,-5.290000915527344,0.7705939079753563,16.87525317682612,0.012869814962943284,-0.03248462461864543
217
+ 2018-07-01,20.701401233673096,0.002303669296562552,24.716031814767575,-0.060762612014401585,-5.489997863769531,0.6692749020331329,17.796682855384848,0.012666503733324312,0.14418606425440594
218
+ 2018-08-01,21.601795196533203,0.0022069481143587063,23.936901809283228,-0.03137410794254447,-7.6199951171875,0.8017455686942337,17.196275019083984,0.01202865878363152,0.256856257332694
219
+ 2018-09-01,18.50880241394043,0.0023390683515483453,24.351729549135346,-0.08409608933785007,-9.470001220703125,0.7310012026899304,16.266211603873497,0.012272765543387515,0.04083482673071104
220
+ 2018-10-01,15.859203338623047,0.0021970634028633308,20.02759864494005,-0.013051260648353824,-10.160003662109375,0.7290521610460973,18.56224305814636,0.011737193366687992,-0.13109757444959236
221
+ 2018-11-01,15.263400554656982,0.0022762662066160024,11.042931574264781,-0.22162798825414687,-7.779998779296875,0.7522897314613247,23.958373136391153,0.011550565830725962,-0.35514052401658314
222
+ 2018-12-01,15.184798240661621,0.002055855370879462,15.445577873524991,-0.2403521736640114,-8.389999389648438,0.8085241616948771,28.15018835268339,0.01207306502494225,-0.2079337553058006
223
+ 2019-01-01,10.66879916191101,0.002113359200971076,19.115139649818275,-0.17357214242182184,-8.099998474121094,0.8186758834676671,24.53429872997805,0.01214063798736327,-0.4304093478018778
224
+ 2019-02-01,16.729398250579834,0.0022471053762641124,20.34850656576543,0.11469178777215494,-8.80999755859375,0.8608037080044424,22.943027277150595,0.01183577051255424,-0.3269113721327558
225
+ 2019-03-01,20.564399480819702,0.0022706884058133034,22.592036327150254,0.19371597818545827,-8.25,0.8249097078838921,21.499833939157924,0.011647332111063459,-0.4849201889545305
226
+ 2019-04-01,24.67639684677124,0.0022618489836330317,24.81941694722744,0.09874516333427752,-8.890003204345703,0.7903614206789016,20.071977028177027,0.011615215973939384,0.017248462821937594
227
+ 2019-05-01,22.741200923919678,0.0020263438577903725,21.801141019300573,-0.05336562092258479,-10.989997863769531,0.8054239970882944,24.407477547733038,0.011127277676241352,0.10960145310941449
228
+ 2019-06-01,23.14439845085144,0.0019192026538806686,25.333621738582,-0.0656460540521272,-8.080001831054688,0.7631578819974656,24.109798558523327,0.01082003318983509,0.40506457197306234
229
+ 2019-07-01,22.045997381210327,0.0018638244427966258,26.233766571448815,-0.09512687498740457,-6.589996337890625,0.8583599706595325,24.34448499463144,0.011462029977708416,0.301574528972679
230
+ 2019-08-01,15.670000791549683,0.001667434687036925,24.113783973875112,-0.03346416102540095,-5.3300018310546875,0.8476998686370508,27.569873278160724,0.011970903665452441,0.7253061411332111
231
+ 2019-09-01,17.545599699020386,0.0017496760448193587,23.206009202616396,-0.08714312482347908,-6.709999084472656,0.8107837850018141,27.107452550717692,0.011528963143951156,0.49885928944806834
232
+ 2019-10-01,17.785598754882812,0.0017420933270278262,20.577289177361934,-0.09429651579903009,-6.049999237060547,0.7615207258912398,27.895902840033457,0.011918750594129815,0.1184863367229787
233
+ 2019-11-01,15.850602626800537,0.0018026746751872874,24.18676045146231,-0.0720331775349139,-7.260002136230469,0.7967171567672332,26.565162664521264,0.01157819333060184,-0.13271825288852535
234
+ 2019-12-01,14.874600410461426,0.0018387626919070586,27.89401753220791,0.04393519918315336,-4.939998626708984,0.815867390770945,24.88535810350927,0.011732806261914117,-0.21613391542790605
235
+ 2020-01-01,12.866600036621094,0.0015920146200375117,28.006519522193116,-0.11023590648442227,-6.599998474121094,0.8832630201168424,30.70015481425748,0.011353844111987806,-0.45535222846121615
236
+ 2020-02-01,15.182399988174438,0.0016277731881296758,26.579571193219454,-0.129230355491586,-5.760002136230469,0.9299791239530887,34.94414732358321,0.010476951209017,-0.5531915103943217
237
+ 2020-03-01,9.738999843597412,0.001414677260955734,12.487804700236586,-0.46458171560503936,-2.260000228881836,1.0438681996255332,77.31445604143053,0.008903624703404922,-0.5864077705260807
238
+ 2020-04-01,10.944998979568481,0.0013976963304822632,9.666495707389792,-0.5375339260823528,-6.430000305175781,0.967970598257247,89.39490113810513,0.00884574290191246,-0.4358452002016895
239
+ 2020-05-01,6.740998268127441,0.0013970292175182425,19.194160139855107,-0.23759987964289742,0.15999984741210938,0.9839056197671827,48.940545004791275,0.010616615968019043,-0.4322343915004442
240
+ 2020-06-01,10.826197862625122,0.0015133854003829728,22.427184116112645,0.7179518142662857,-1.8800010681152344,0.9895935058271931,45.6582627719289,0.010340769864027103,0.15649452596154512
241
+ 2020-07-01,10.008201360702515,0.0014565925700279869,22.384658076898,1.0143150762729842,-3.029998779296875,0.8757607882683821,48.74099891898499,0.012323720488215254,0.47111907484639226
242
+ 2020-08-01,9.86620044708252,0.001545537673869225,16.201520433472687,0.050832219618871965,-2.6699981689453125,0.7643994335698465,46.17695253122707,0.014452632967824373,0.8322581253819183
243
+ 2020-09-01,9.437997817993164,0.001604503353699093,15.91610684372129,-0.06054570666566339,-0.7299995422363281,0.7444946979587638,46.92938693849382,0.012414834736192202,0.11502028687272436
244
+ 2020-10-01,8.734199047088623,0.0016211249105221967,10.67084076562667,-0.11089438979833788,-1.6699981689453125,0.9205811418690258,52.45599263304585,0.01257963155038963,-0.1693251168338854
245
+ 2020-11-01,8.611802101135254,0.0019262826683049874,15.732130679029245,0.029409719123334233,-2.25,0.7709894849612411,39.16409230605966,0.012690207251424706,-0.24647890477002798
246
+ 2020-12-01,11.583401203155518,0.0018562146660402136,19.109885696166966,0.08948418575655803,-3.279998779296875,0.8447827605402146,39.016899375234985,0.013909461239234283,-0.06553397777336945
247
+ 2021-01-01,14.23559856414795,0.0019344447699489867,20.358815505447776,0.3226408311354223,-3.6800003051757812,0.8838141390341372,35.3888893063823,0.014561792295507334,0.5273264670191036
248
+ 2021-02-01,17.04699969291687,0.002369365269772187,22.194154460390244,0.30408813395511336,-4.629997253417969,0.820610676311849,28.099186594436397,0.015278051501782373,0.9797507612311489
249
+ 2021-03-01,20.330599546432495,0.0023357449343621626,22.684048664161764,0.1615658184533364,-4.380001068115234,0.7794294935105204,28.968898803574366,0.014305636305188794,1.197402661742239
250
+ 2021-04-01,21.269795656204224,0.002534374451310727,21.692255862670255,0.09229422786540065,-3.6699981689453125,0.8126637956133421,27.79647684654702,0.014628529353573729,1.3887814698685035
251
+ 2021-05-01,22.228599071502686,0.0024612351566657667,22.210314238782285,-0.02473399939343124,-3.30999755859375,0.7817164090773562,28.686670819146418,0.014713797650724239,0.8095987357174892
252
+ 2021-06-01,19.174999713897705,0.0024263045445670458,20.128766926286453,0.16018014011974824,-1.6599960327148438,0.7859980338954908,24.102354966410815,0.014775807654188833,0.7346335844638112
253
+ 2021-07-01,23.086803436279297,0.002471863776673401,18.89371391943901,0.11189818789097528,-2.3800048828125,0.8765016933370527,24.511156867661132,0.014083636887208649,0.044534349803404094
254
+ 2021-08-01,25.246798515319824,0.002402203930309643,15.649989091375119,-0.042904991133786874,-4.489997863769531,0.8459958895614228,26.496350364576696,0.013201101423944603,0.23173912711765454
255
+ 2021-09-01,20.854598999023438,0.002330086047292103,12.788477492642885,0.01889687171685006,-3.4899978637695312,0.8682926724205445,23.394643174232232,0.012545433427826998,0.22691645156734985
256
+ 2021-10-01,20.315598964691162,0.0024540102087361195,15.401768864370954,0.08228186492222278,-0.80999755859375,0.8279022776662618,21.3354075205183,0.013429612840611772,0.16434115518795145
257
+ 2021-11-01,18.156002044677734,0.0024120432661338806,14.490913414076893,-0.043668068847934394,-4.3899993896484375,0.9926981065702724,26.799636859784492,0.012835475700835423,-0.059301105178259705
258
+ 2021-12-01,19.809398651123047,0.00243775645619897,20.16353852003221,-0.10407475089170082,-2.5699996948242188,0.8122640892846184,24.298630796725995,0.012764978995883705,-0.18106078462425867
259
+ 2022-01-01,21.999201774597168,0.0024055709413817877,18.085761222189326,0.07430984317682265,-3.05999755859375,0.8232758636772117,20.36301723094882,0.012476323374791752,-0.26964048384176065
260
+ 2022-02-01,24.783597946166992,0.0023399494115786093,21.74466203482494,0.48863126784639255,-5.269996643066406,0.9214547216621688,19.843292939526215,0.012825629013318218,-0.19587239730108374
261
+ 2022-03-01,40.70560121536255,0.002433306048291051,17.773838219749877,0.3828006238754085,-7.6300048828125,0.7617636027986096,19.43757454008721,0.01288785189780102,-0.18006102092760523
262
+ 2022-04-01,59.47259998321533,0.0023018906764401643,14.45196066170385,0.2725899632450277,-4.649993896484375,0.8732026542485152,18.237654067096805,0.012067249948302565,-0.02096631634567314
263
+ 2022-05-01,56.853800773620605,0.0023308190102030372,14.078574795605482,0.25325290978329484,-8.169998168945312,0.7933959971206623,16.069590830906993,0.011749606361813299,0.035464312555248956
264
+ 2022-06-01,51.00920009613037,0.0020589213461967245,19.498526231944417,0.21909797684490584,-9.049995422363281,0.7928748911786365,17.058433615054213,0.011242170535152436,-0.2899090215222756
265
+ 2022-07-01,49.79259967803955,0.002033013818702173,11.984445453565298,-0.05758375864921461,-11.389999389648438,0.7827522907494789,17.875684194880893,0.011433433466550064,-0.4217876936229733
266
+ 2022-08-01,35.430798053741455,0.002054238667292567,9.81154864295098,-0.1761922382949146,-6.939994812011719,0.8036657950325179,19.126744728518208,0.010370153330151512,-0.6466876987877979
267
+ 2022-09-01,36.90880107879639,0.0020705003980453357,11.74844816318753,-0.1956212303803837,-8.470001220703125,0.8636984515490305,20.91332329939398,0.01140519658687083,-0.47350029576678576
268
+ 2022-10-01,50.84219741821289,0.002086618998488273,13.616050118957558,-0.060051386862902345,-8.300003051757812,0.8305519668378762,18.905582427750613,0.011690812222365725,-0.4283413960532626
269
+ 2022-11-01,34.24859571456909,0.00213602523213687,11.623377349988369,-0.1321359117729215,-4.879997253417969,0.7777778017764596,21.675976832135223,0.012342496699340323,0.0025510179256709176
270
+ 2022-12-01,35.67680025100708,0.0020912788551017817,17.93519638630813,-0.061118207000909086,-5.650001525878906,0.785144919420282,22.672562954340673,0.013113150602844532,0.01659287822602229
271
+ 2023-01-01,36.90019702911377,0.0021915003313664615,29.38524674694989,-0.14137054453530906,-5.6199951171875,0.7522295048116078,24.464307503262436,0.01230785135593256,0.0985915909161581
272
+ 2023-02-01,30.602994918823242,0.0022404176240976396,28.04878180276516,-0.01650096750981933,-6.839996337890625,0.7840909492902395,23.73653409412294,0.011460987567764315,0.1513994958023468
273
+ 2023-03-01,37.41220283508301,0.00208456059771074,34.14710983723808,-0.12746136933484464,-4.099998474121094,0.7923729008424071,26.020880766745535,0.01222752677176781,0.09902076633701773
274
+ 2023-04-01,28.705803394317627,0.001944625864546181,31.85891950745434,-0.04928301502911159,-2.7600021362304688,0.7842941885676451,25.919510382912804,0.012561680747693836,0.12307692495793754
275
+ 2023-05-01,35.221603870391846,0.001848872140547554,30.048541629973663,-0.16910237811073414,-4.57000732421875,0.8110307347469488,28.842710089739736,0.011952747410234258,-0.3613259571280726
276
+ 2023-06-01,37.386802196502686,0.0019473218388410727,25.246603612774845,-0.1494721197777057,-4.260002136230469,0.6951406998589778,27.195639753081014,0.011873405734115132,-0.4504950513747168
277
+ 2023-07-01,42.0845947265625,0.0020271504297369597,31.05542941002121,-0.035225599279062214,-3.7599945068359375,0.7054865594737496,24.089241154784606,0.012613042421486994,-0.4349315433868458
278
+ 2023-08-01,37.82560634613037,0.0019463936297512009,30.213150514161303,0.14979593519553602,-3.2300033569335938,0.7241195229369213,23.175893995016057,0.012626148353404622,-0.1539792925634278
279
+ 2023-09-01,24.597997188568115,0.0020161247333973695,30.996928630546872,0.321724730123894,-4.519996643066406,0.8233082655836204,20.3557655791312,0.01203181665211225,-0.010810886045889423
280
+ 2023-10-01,23.089605808258057,0.001834324040776784,22.662935815314817,0.07657551872957014,-6.390007019042969,0.8076580644823608,24.502592364859883,0.011505641832086891,0.01212129735932388
281
+ 2023-11-01,25.261399745941162,0.0018787105843925133,27.109206929479814,-0.10505513645146192,-6.870002746582031,0.7727273089779279,26.83122696318889,0.012410087616184864,0.9079754966151874
282
+ 2023-12-01,22.96620273590088,0.0018815458989255862,28.50039906002578,-0.3231703295665731,-5.3899993896484375,0.7685184705039233,28.78436648141672,0.011565652526336224,1.1056467944555561
283
+ 2024-01-01,24.597200393676758,0.0019051455283229713,36.11904851551568,-0.21924324309641785,-5.8600006103515625,0.7863013907223795,27.005932017462438,0.011253174035356521,1.2435128258720218
284
+ 2024-02-01,23.83359956741333,0.0018744195952041436,42.07526961949658,-0.08541556230497171,-5.3600006103515625,0.7786171023008079,26.139789104333264,0.011079826419908591,0.6345123391965053
285
+ 2024-03-01,30.759204864501953,0.0018054929922689097,47.17526805552578,0.05920138423139898,-4.310005187988281,0.7809123857898378,26.66105508157916,0.011182917821358529,0.19896186449591924
286
+ 2024-04-01,29.159998893737793,0.0019920136377638534,41.15017476074213,0.040939543216394814,-5.930000305175781,0.8491589451187396,27.967776074462275,0.011517413752472979,0.1307829445696307
287
+ 2024-05-01,24.02840566635132,0.0019845883711394714,29.76034055382934,-0.05179122717800522,-4.6300048828125,0.7736526637886318,30.17145040611443,0.01304274921809062,-0.21704920784371795
288
+ 2024-06-01,24.511398315429688,0.001886196743894022,31.349480458202798,-0.058828709259012735,-4.870002746582031,0.7660098371270337,28.546724613784907,0.012560467467891166,-0.11688311152148012
289
+ 2024-07-01,25.402998447418213,0.0017144033988915701,38.26620978041952,-0.14569844798528364,-2.80999755859375,0.7339614148791321,31.14490933016032,0.011859880435985093,-0.156569611734501
290
+ 2024-08-01,19.89859437942505,0.0016621220225224757,34.5792194571706,-0.11495855069388872,-5.25,0.7776049397254438,33.90618552441539,0.011520972146005922,-0.06951423390916145
291
+ 2024-09-01,16.614001750946045,0.0017055497312395346,23.321928113919927,-0.21927512960866946,-3.5999984741210938,0.8286279890476776,38.66950518444417,0.011822009181362699,-0.12254902189944816
292
+ 2024-10-01,17.910998344421387,0.0015752473617217989,25.585519642201845,-0.14419115742350763,-3.9000015258789062,0.9316170264628554,39.536528506056186,0.011924551471958615,-0.3022388215717211
293
+ 2024-11-01,17.12559986114502,0.0015357546578409762,20.220042128074166,-0.14343922060378156,-4.94000244140625,0.8406969809957372,39.073529411190094,0.011548738978521203,-0.4014401169336941
294
+ 2024-12-01,16.810396194458008,0.0015160505610297987,19.741261556358147,0.031398894811244915,-2.9199981689453125,0.8709839515134509,36.65922903493001,0.011007150871559847,-0.4338919875905125
295
+ 2025-01-01,19.274999618530273,0.0015153778076166487,23.827201344109174,-0.011516388208867578,-4.230003356933594,0.8170064547835708,38.777058421294626,0.011423288302947327,-0.22860963018537295
296
+ 2025-02-01,18.376995086669922,0.001591405831724776,18.195096532389307,0.038792692447900734,-3.4199981689453125,0.8662841699949158,40.665137068769425,0.01100500540232167,-0.03759398442327189
297
+ 2025-03-01,24.84279203414917,0.0016075316710747242,17.353727620240655,0.04252188453034622,-3.2599945068359375,0.8782025994777435,43.68774345449893,0.011034008003599629,0.027960539214994196
298
+ 2025-04-01,27.339799404144287,0.0013797276680115465,17.501503157224967,-0.11938448735405216,-4.909999847412109,0.8884892604285782,56.77718694252345,0.009842964668674925,-0.0008665709631623386
299
+ 2025-05-01,24.525997161865234,0.0014146067958076167,17.635625305184135,-0.12139419878643942,-3.1100006103515625,0.8897939121796673,54.10264603976305,0.010000911936409493,-0.1890625031432136
300
+ 2025-06-01,25.965595245361328,0.001526833523224763,18.83969875654508,-0.19480295929001035,-2.5,0.855316973321552,50.59744849348672,0.010882710737293402,-0.11199996948242186
301
+ 2025-07-01,26.369796752929688,0.001314982445673455,22.298777625503828,0.05150680491599102,-3.2699966430664062,0.8694747639365044,47.548366294398754,0.011099234386120321,0.28360802545491626
302
+ 2025-08-01,28.976595401763916,0.0013007743658749688,21.358025546540425,-0.03982482148616895,-4.1100006103515625,0.8037676172314315,54.26808053723605,0.011572675051961858,0.612716723175085
303
+ 2025-09-01,25.526201725006104,0.0012510413890989812,18.882833611028758,-0.12000588549272695,-4.649997711181641,0.8140000342915754,61.58089008404732,0.012042542637998324,0.3531531478897938
304
+ 2025-10-01,28.86360216140747,0.0012720355192285906,14.786614562494425,-0.19854927932277955,-4.090000152587891,0.7930877996720291,65.30337784519655,0.012052132004839568,0.09459463203797935
305
+ 2025-11-01,27.197200298309326,0.0012292867707494343,12.072165026037062,-0.14548720877719912,-4.650001525878906,0.7723193349916919,72.04611203385612,0.013381220339713635,0.04778979422624818
306
+ 2025-12-01,20.019601345062256,0.0013015535387772281,15.577861220770469,-0.10284434527782915,-3.4300003051757812,0.7643149395035295,75.33264081363815,0.01621370471198471,0.16777632363260753
307
+ 2026-01-01,26.926799297332764,0.0012509811319995952,14.977032085049927,0.0549186510234132,-5.480003356933594,0.7744227432851064,72.28799215539173,0.016608329098499727,0.4234566901192045
308
+ 2026-02-01,28.553802967071533,0.0011479781879860079,23.441761937643253,0.14031315032340497,-5.4600067138671875,0.8099510700968775,78.0438714101768,0.017719529529973282,0.37628267557719575
309
+ 2026-03-01,50.059200286865234,0.001175257318178638,31.337038280761448,0.7113931909020147,-8.75,0.9033584761399958,47.541203584635,0.015051676247003397,0.1396806572240228
data/live/eia_monthly.csv ADDED
The diff for this file is too large to render. See raw diff
 
data/live/fred_monthly.csv ADDED
The diff for this file is too large to render. See raw diff
 
data/live/gdelt_monthly.csv ADDED
@@ -0,0 +1,1515 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ date,gpr_index,gpr_historical,gpr_threats,gpr_acts
2
+ 1900-01-01,,87.92784881591797,,
3
+ 1900-02-01,,86.56649017333984,,
4
+ 1900-03-01,,72.14070129394531,,
5
+ 1900-04-01,,54.41944885253906,,
6
+ 1900-05-01,,64.40519714355469,,
7
+ 1900-06-01,,83.6102523803711,,
8
+ 1900-07-01,,108.57112121582031,,
9
+ 1900-08-01,,108.50281524658203,,
10
+ 1900-09-01,,62.81330108642578,,
11
+ 1900-10-01,,43.3669319152832,,
12
+ 1900-11-01,,47.34355926513672,,
13
+ 1900-12-01,,49.31974792480469,,
14
+ 1901-01-01,,42.479026794433594,,
15
+ 1901-02-01,,50.14393997192383,,
16
+ 1901-03-01,,47.93758010864258,,
17
+ 1901-04-01,,37.94577407836914,,
18
+ 1901-05-01,,37.379661560058594,,
19
+ 1901-06-01,,31.65671157836914,,
20
+ 1901-07-01,,37.257781982421875,,
21
+ 1901-08-01,,58.15801239013672,,
22
+ 1901-09-01,,41.08998107910156,,
23
+ 1901-10-01,,36.3206672668457,,
24
+ 1901-11-01,,45.11560821533203,,
25
+ 1901-12-01,,51.43546676635742,,
26
+ 1902-01-01,,36.96080017089844,,
27
+ 1902-02-01,,45.69105529785156,,
28
+ 1902-03-01,,38.85895538330078,,
29
+ 1902-04-01,,43.80052185058594,,
30
+ 1902-05-01,,38.256004333496094,,
31
+ 1902-06-01,,38.82642364501953,,
32
+ 1902-07-01,,40.57379913330078,,
33
+ 1902-08-01,,55.660911560058594,,
34
+ 1902-09-01,,51.42823791503906,,
35
+ 1902-10-01,,52.151634216308594,,
36
+ 1902-11-01,,26.343225479125977,,
37
+ 1902-12-01,,53.20724868774414,,
38
+ 1903-01-01,,52.41050338745117,,
39
+ 1903-02-01,,55.73627471923828,,
40
+ 1903-03-01,,31.134950637817383,,
41
+ 1903-04-01,,33.48476028442383,,
42
+ 1903-05-01,,40.75469207763672,,
43
+ 1903-06-01,,33.45854949951172,,
44
+ 1903-07-01,,35.46428298950195,,
45
+ 1903-08-01,,63.499298095703125,,
46
+ 1903-09-01,,65.83991241455078,,
47
+ 1903-10-01,,49.20123291015625,,
48
+ 1903-11-01,,67.45408630371094,,
49
+ 1903-12-01,,65.4568862915039,,
50
+ 1904-01-01,,91.97727966308594,,
51
+ 1904-02-01,,140.36837768554688,,
52
+ 1904-03-01,,93.33812713623047,,
53
+ 1904-04-01,,59.158538818359375,,
54
+ 1904-05-01,,84.38663482666016,,
55
+ 1904-06-01,,66.13349151611328,,
56
+ 1904-07-01,,72.77484130859375,,
57
+ 1904-08-01,,84.4542007446289,,
58
+ 1904-09-01,,70.81743621826172,,
59
+ 1904-10-01,,61.02932357788086,,
60
+ 1904-11-01,,49.90920639038086,,
61
+ 1904-12-01,,45.96025466918945,,
62
+ 1905-01-01,,64.62164306640625,,
63
+ 1905-02-01,,59.15699768066406,,
64
+ 1905-03-01,,67.75492095947266,,
65
+ 1905-04-01,,41.50507354736328,,
66
+ 1905-05-01,,54.1502571105957,,
67
+ 1905-06-01,,69.75360870361328,,
68
+ 1905-07-01,,60.98286056518555,,
69
+ 1905-08-01,,53.226959228515625,,
70
+ 1905-09-01,,49.39082336425781,,
71
+ 1905-10-01,,41.11686706542969,,
72
+ 1905-11-01,,41.315608978271484,,
73
+ 1905-12-01,,45.711238861083984,,
74
+ 1906-01-01,,36.640533447265625,,
75
+ 1906-02-01,,38.84855270385742,,
76
+ 1906-03-01,,33.214324951171875,,
77
+ 1906-04-01,,31.301488876342773,,
78
+ 1906-05-01,,40.36772155761719,,
79
+ 1906-06-01,,42.09005355834961,,
80
+ 1906-07-01,,48.36927795410156,,
81
+ 1906-08-01,,50.42543029785156,,
82
+ 1906-09-01,,67.00239562988281,,
83
+ 1906-10-01,,39.79033279418945,,
84
+ 1906-11-01,,31.109947204589844,,
85
+ 1906-12-01,,29.637134552001953,,
86
+ 1907-01-01,,31.904911041259766,,
87
+ 1907-02-01,,43.50050735473633,,
88
+ 1907-03-01,,34.895851135253906,,
89
+ 1907-04-01,,29.97407341003418,,
90
+ 1907-05-01,,31.970109939575195,,
91
+ 1907-06-01,,47.547000885009766,,
92
+ 1907-07-01,,49.25531005859375,,
93
+ 1907-08-01,,40.46546173095703,,
94
+ 1907-09-01,,26.407461166381836,,
95
+ 1907-10-01,,25.982343673706055,,
96
+ 1907-11-01,,22.88751983642578,,
97
+ 1907-12-01,,28.17491912841797,,
98
+ 1908-01-01,,42.24368667602539,,
99
+ 1908-02-01,,25.947519302368164,,
100
+ 1908-03-01,,30.953086853027344,,
101
+ 1908-04-01,,26.942676544189453,,
102
+ 1908-05-01,,24.832048416137695,,
103
+ 1908-06-01,,36.41197967529297,,
104
+ 1908-07-01,,36.01042175292969,,
105
+ 1908-08-01,,28.468820571899414,,
106
+ 1908-09-01,,21.812177658081055,,
107
+ 1908-10-01,,44.5191650390625,,
108
+ 1908-11-01,,36.15563201904297,,
109
+ 1908-12-01,,39.65751266479492,,
110
+ 1909-01-01,,25.64866828918457,,
111
+ 1909-02-01,,38.02793884277344,,
112
+ 1909-03-01,,38.112274169921875,,
113
+ 1909-04-01,,34.06084060668945,,
114
+ 1909-05-01,,28.990856170654297,,
115
+ 1909-06-01,,25.535863876342773,,
116
+ 1909-07-01,,32.89564514160156,,
117
+ 1909-08-01,,34.89463424682617,,
118
+ 1909-09-01,,24.736513137817383,,
119
+ 1909-10-01,,27.12741470336914,,
120
+ 1909-11-01,,29.100927352905273,,
121
+ 1909-12-01,,31.947172164916992,,
122
+ 1910-01-01,,28.402252197265625,,
123
+ 1910-02-01,,31.38466453552246,,
124
+ 1910-03-01,,33.822444915771484,,
125
+ 1910-04-01,,25.54547691345215,,
126
+ 1910-05-01,,31.40444564819336,,
127
+ 1910-06-01,,29.732105255126953,,
128
+ 1910-07-01,,34.192501068115234,,
129
+ 1910-08-01,,32.8275146484375,,
130
+ 1910-09-01,,25.606151580810547,,
131
+ 1910-10-01,,28.79314613342285,,
132
+ 1910-11-01,,32.57762908935547,,
133
+ 1910-12-01,,36.33582305908203,,
134
+ 1911-01-01,,45.068424224853516,,
135
+ 1911-02-01,,31.0305233001709,,
136
+ 1911-03-01,,78.62703704833984,,
137
+ 1911-04-01,,53.017539978027344,,
138
+ 1911-05-01,,53.114627838134766,,
139
+ 1911-06-01,,26.954326629638672,,
140
+ 1911-07-01,,42.916683197021484,,
141
+ 1911-08-01,,47.5488395690918,,
142
+ 1911-09-01,,72.41173553466797,,
143
+ 1911-10-01,,73.60086822509766,,
144
+ 1911-11-01,,59.91981887817383,,
145
+ 1911-12-01,,48.14202117919922,,
146
+ 1912-01-01,,43.30744934082031,,
147
+ 1912-02-01,,48.680843353271484,,
148
+ 1912-03-01,,43.984458923339844,,
149
+ 1912-04-01,,34.29108810424805,,
150
+ 1912-05-01,,54.04902648925781,,
151
+ 1912-06-01,,39.04309844970703,,
152
+ 1912-07-01,,33.745384216308594,,
153
+ 1912-08-01,,53.78118133544922,,
154
+ 1912-09-01,,51.32735061645508,,
155
+ 1912-10-01,,103.23745727539062,,
156
+ 1912-11-01,,91.97689056396484,,
157
+ 1912-12-01,,47.7298469543457,,
158
+ 1913-01-01,,44.95026397705078,,
159
+ 1913-02-01,,64.22825622558594,,
160
+ 1913-03-01,,46.39574432373047,,
161
+ 1913-04-01,,49.086219787597656,,
162
+ 1913-05-01,,45.788658142089844,,
163
+ 1913-06-01,,26.728918075561523,,
164
+ 1913-07-01,,71.59680938720703,,
165
+ 1913-08-01,,68.47576141357422,,
166
+ 1913-09-01,,41.193199157714844,,
167
+ 1913-10-01,,27.059574127197266,,
168
+ 1913-11-01,,60.411590576171875,,
169
+ 1913-12-01,,44.64571762084961,,
170
+ 1914-01-01,,52.96929931640625,,
171
+ 1914-02-01,,67.7383041381836,,
172
+ 1914-03-01,,60.30073165893555,,
173
+ 1914-04-01,,145.24484252929688,,
174
+ 1914-05-01,,101.2608413696289,,
175
+ 1914-06-01,,71.59599304199219,,
176
+ 1914-07-01,,135.99359130859375,,
177
+ 1914-08-01,,472.3014221191406,,
178
+ 1914-09-01,,384.95294189453125,,
179
+ 1914-10-01,,315.9481201171875,,
180
+ 1914-11-01,,302.9434509277344,,
181
+ 1914-12-01,,280.0399475097656,,
182
+ 1915-01-01,,229.47760009765625,,
183
+ 1915-02-01,,303.4684753417969,,
184
+ 1915-03-01,,254.25970458984375,,
185
+ 1915-04-01,,227.86082458496094,,
186
+ 1915-05-01,,301.5808410644531,,
187
+ 1915-06-01,,316.1856994628906,,
188
+ 1915-07-01,,291.3963928222656,,
189
+ 1915-08-01,,313.17083740234375,,
190
+ 1915-09-01,,268.7383728027344,,
191
+ 1915-10-01,,274.59576416015625,,
192
+ 1915-11-01,,240.10557556152344,,
193
+ 1915-12-01,,214.3123321533203,,
194
+ 1916-01-01,,216.86886596679688,,
195
+ 1916-02-01,,206.70632934570312,,
196
+ 1916-03-01,,245.46484375,,
197
+ 1916-04-01,,232.92276000976562,,
198
+ 1916-05-01,,229.47640991210938,,
199
+ 1916-06-01,,318.33349609375,,
200
+ 1916-07-01,,312.4759216308594,,
201
+ 1916-08-01,,307.63909912109375,,
202
+ 1916-09-01,,294.16204833984375,,
203
+ 1916-10-01,,268.88787841796875,,
204
+ 1916-11-01,,241.3140869140625,,
205
+ 1916-12-01,,249.39083862304688,,
206
+ 1917-01-01,,210.63088989257812,,
207
+ 1917-02-01,,350.2068786621094,,
208
+ 1917-03-01,,331.6864318847656,,
209
+ 1917-04-01,,338.6053771972656,,
210
+ 1917-05-01,,296.0191345214844,,
211
+ 1917-06-01,,266.41851806640625,,
212
+ 1917-07-01,,305.0151062011719,,
213
+ 1917-08-01,,323.6415100097656,,
214
+ 1917-09-01,,287.9421691894531,,
215
+ 1917-10-01,,262.8323669433594,,
216
+ 1917-11-01,,297.8530578613281,,
217
+ 1917-12-01,,292.8008117675781,,
218
+ 1918-01-01,,278.3055725097656,,
219
+ 1918-02-01,,292.1138610839844,,
220
+ 1918-03-01,,331.9317626953125,,
221
+ 1918-04-01,,349.8001708984375,,
222
+ 1918-05-01,,290.0693054199219,,
223
+ 1918-06-01,,366.06695556640625,,
224
+ 1918-07-01,,408.345458984375,,
225
+ 1918-08-01,,393.5311279296875,,
226
+ 1918-09-01,,409.2270202636719,,
227
+ 1918-10-01,,393.5849914550781,,
228
+ 1918-11-01,,269.87249755859375,,
229
+ 1918-12-01,,196.59378051757812,,
230
+ 1919-01-01,,187.20191955566406,,
231
+ 1919-02-01,,207.40342712402344,,
232
+ 1919-03-01,,190.1789093017578,,
233
+ 1919-04-01,,198.12655639648438,,
234
+ 1919-05-01,,158.0450439453125,,
235
+ 1919-06-01,,169.1619415283203,,
236
+ 1919-07-01,,168.7230224609375,,
237
+ 1919-08-01,,156.36415100097656,,
238
+ 1919-09-01,,142.34783935546875,,
239
+ 1919-10-01,,143.55020141601562,,
240
+ 1919-11-01,,151.64825439453125,,
241
+ 1919-12-01,,126.97437286376953,,
242
+ 1920-01-01,,110.3846664428711,,
243
+ 1920-02-01,,94.42341613769531,,
244
+ 1920-03-01,,134.0078582763672,,
245
+ 1920-04-01,,138.16986083984375,,
246
+ 1920-05-01,,95.29356384277344,,
247
+ 1920-06-01,,82.3554916381836,,
248
+ 1920-07-01,,110.29871368408203,,
249
+ 1920-08-01,,125.35875701904297,,
250
+ 1920-09-01,,82.65211486816406,,
251
+ 1920-10-01,,95.932861328125,,
252
+ 1920-11-01,,76.41144561767578,,
253
+ 1920-12-01,,79.46946716308594,,
254
+ 1921-01-01,,57.45201873779297,,
255
+ 1921-02-01,,71.34617614746094,,
256
+ 1921-03-01,,86.93142700195312,,
257
+ 1921-04-01,,73.6823501586914,,
258
+ 1921-05-01,,85.56208038330078,,
259
+ 1921-06-01,,81.83202362060547,,
260
+ 1921-07-01,,69.0535659790039,,
261
+ 1921-08-01,,71.40784454345703,,
262
+ 1921-09-01,,60.794368743896484,,
263
+ 1921-10-01,,73.81822967529297,,
264
+ 1921-11-01,,73.88545227050781,,
265
+ 1921-12-01,,68.35862731933594,,
266
+ 1922-01-01,,56.99806213378906,,
267
+ 1922-02-01,,56.697940826416016,,
268
+ 1922-03-01,,61.155635833740234,,
269
+ 1922-04-01,,73.25740051269531,,
270
+ 1922-05-01,,58.883094787597656,,
271
+ 1922-06-01,,65.47126770019531,,
272
+ 1922-07-01,,86.22325134277344,,
273
+ 1922-08-01,,62.41816329956055,,
274
+ 1922-09-01,,85.52635192871094,,
275
+ 1922-10-01,,62.84267044067383,,
276
+ 1922-11-01,,56.927223205566406,,
277
+ 1922-12-01,,52.68137741088867,,
278
+ 1923-01-01,,83.26092529296875,,
279
+ 1923-02-01,,74.30038452148438,,
280
+ 1923-03-01,,55.053401947021484,,
281
+ 1923-04-01,,47.3514404296875,,
282
+ 1923-05-01,,70.75028228759766,,
283
+ 1923-06-01,,47.444454193115234,,
284
+ 1923-07-01,,56.37287139892578,,
285
+ 1923-08-01,,42.565895080566406,,
286
+ 1923-09-01,,80.44438934326172,,
287
+ 1923-10-01,,48.92905807495117,,
288
+ 1923-11-01,,42.20532989501953,,
289
+ 1923-12-01,,57.77907943725586,,
290
+ 1924-01-01,,60.661170959472656,,
291
+ 1924-02-01,,44.82847213745117,,
292
+ 1924-03-01,,32.45082092285156,,
293
+ 1924-04-01,,42.562889099121094,,
294
+ 1924-05-01,,39.055789947509766,,
295
+ 1924-06-01,,32.076393127441406,,
296
+ 1924-07-01,,56.53169631958008,,
297
+ 1924-08-01,,61.551719665527344,,
298
+ 1924-09-01,,76.80686950683594,,
299
+ 1924-10-01,,53.92131423950195,,
300
+ 1924-11-01,,50.29384231567383,,
301
+ 1924-12-01,,45.73115921020508,,
302
+ 1925-01-01,,36.466339111328125,,
303
+ 1925-02-01,,40.31141662597656,,
304
+ 1925-03-01,,39.6591796875,,
305
+ 1925-04-01,,52.62643814086914,,
306
+ 1925-05-01,,42.952415466308594,,
307
+ 1925-06-01,,51.69419479370117,,
308
+ 1925-07-01,,51.44901657104492,,
309
+ 1925-08-01,,52.57301712036133,,
310
+ 1925-09-01,,46.796791076660156,,
311
+ 1925-10-01,,57.5921516418457,,
312
+ 1925-11-01,,38.31930160522461,,
313
+ 1925-12-01,,38.77006912231445,,
314
+ 1926-01-01,,24.919939041137695,,
315
+ 1926-02-01,,31.870159149169922,,
316
+ 1926-03-01,,28.225231170654297,,
317
+ 1926-04-01,,41.08078384399414,,
318
+ 1926-05-01,,54.81474685668945,,
319
+ 1926-06-01,,38.43251037597656,,
320
+ 1926-07-01,,36.161441802978516,,
321
+ 1926-08-01,,39.1467399597168,,
322
+ 1926-09-01,,45.01839828491211,,
323
+ 1926-10-01,,34.68489074707031,,
324
+ 1926-11-01,,35.74689483642578,,
325
+ 1926-12-01,,42.063804626464844,,
326
+ 1927-01-01,,64.30874633789062,,
327
+ 1927-02-01,,52.68061828613281,,
328
+ 1927-03-01,,61.619041442871094,,
329
+ 1927-04-01,,56.56696701049805,,
330
+ 1927-05-01,,35.45627975463867,,
331
+ 1927-06-01,,39.565284729003906,,
332
+ 1927-07-01,,34.9145622253418,,
333
+ 1927-08-01,,39.5889892578125,,
334
+ 1927-09-01,,32.728294372558594,,
335
+ 1927-10-01,,43.110965728759766,,
336
+ 1927-11-01,,47.428192138671875,,
337
+ 1927-12-01,,42.61509704589844,,
338
+ 1928-01-01,,46.50865936279297,,
339
+ 1928-02-01,,37.31113815307617,,
340
+ 1928-03-01,,41.677738189697266,,
341
+ 1928-04-01,,37.59975051879883,,
342
+ 1928-05-01,,41.14933395385742,,
343
+ 1928-06-01,,35.10234069824219,,
344
+ 1928-07-01,,34.82687759399414,,
345
+ 1928-08-01,,37.78215026855469,,
346
+ 1928-09-01,,30.70033836364746,,
347
+ 1928-10-01,,27.113065719604492,,
348
+ 1928-11-01,,28.41400718688965,,
349
+ 1928-12-01,,48.1014518737793,,
350
+ 1929-01-01,,37.30567169189453,,
351
+ 1929-02-01,,42.39878463745117,,
352
+ 1929-03-01,,46.79766845703125,,
353
+ 1929-04-01,,44.73091125488281,,
354
+ 1929-05-01,,40.48475646972656,,
355
+ 1929-06-01,,29.21702003479004,,
356
+ 1929-07-01,,57.564208984375,,
357
+ 1929-08-01,,44.63158416748047,,
358
+ 1929-09-01,,35.48832321166992,,
359
+ 1929-10-01,,35.246463775634766,,
360
+ 1929-11-01,,35.136348724365234,,
361
+ 1929-12-01,,37.46351623535156,,
362
+ 1930-01-01,,34.294044494628906,,
363
+ 1930-02-01,,36.43842315673828,,
364
+ 1930-03-01,,43.74150085449219,,
365
+ 1930-04-01,,38.941139221191406,,
366
+ 1930-05-01,,38.57687759399414,,
367
+ 1930-06-01,,43.812774658203125,,
368
+ 1930-07-01,,39.306541442871094,,
369
+ 1930-08-01,,45.42131423950195,,
370
+ 1930-09-01,,45.568111419677734,,
371
+ 1930-10-01,,65.15262603759766,,
372
+ 1930-11-01,,43.057857513427734,,
373
+ 1930-12-01,,41.41242218017578,,
374
+ 1931-01-01,,36.426544189453125,,
375
+ 1931-02-01,,36.32712173461914,,
376
+ 1931-03-01,,37.66576385498047,,
377
+ 1931-04-01,,41.03825378417969,,
378
+ 1931-05-01,,45.69710159301758,,
379
+ 1931-06-01,,34.43394470214844,,
380
+ 1931-07-01,,39.307411193847656,,
381
+ 1931-08-01,,46.563724517822266,,
382
+ 1931-09-01,,46.76708221435547,,
383
+ 1931-10-01,,52.48063278198242,,
384
+ 1931-11-01,,70.79185485839844,,
385
+ 1931-12-01,,47.381507873535156,,
386
+ 1932-01-01,,63.57196044921875,,
387
+ 1932-02-01,,113.99314880371094,,
388
+ 1932-03-01,,67.1852798461914,,
389
+ 1932-04-01,,53.59299087524414,,
390
+ 1932-05-01,,45.1197509765625,,
391
+ 1932-06-01,,38.662662506103516,,
392
+ 1932-07-01,,56.50954055786133,,
393
+ 1932-08-01,,73.4521484375,,
394
+ 1932-09-01,,70.19732666015625,,
395
+ 1932-10-01,,44.72287368774414,,
396
+ 1932-11-01,,45.76577377319336,,
397
+ 1932-12-01,,43.854183197021484,,
398
+ 1933-01-01,,46.3891716003418,,
399
+ 1933-02-01,,89.67784118652344,,
400
+ 1933-03-01,,73.78299713134766,,
401
+ 1933-04-01,,52.085147857666016,,
402
+ 1933-05-01,,75.33802795410156,,
403
+ 1933-06-01,,38.8099250793457,,
404
+ 1933-07-01,,32.775962829589844,,
405
+ 1933-08-01,,49.95660400390625,,
406
+ 1933-09-01,,44.8657112121582,,
407
+ 1933-10-01,,50.18244934082031,,
408
+ 1933-11-01,,41.157222747802734,,
409
+ 1933-12-01,,39.4976806640625,,
410
+ 1934-01-01,,41.815208435058594,,
411
+ 1934-02-01,,50.252017974853516,,
412
+ 1934-03-01,,44.2706413269043,,
413
+ 1934-04-01,,41.63150405883789,,
414
+ 1934-05-01,,64.64432525634766,,
415
+ 1934-06-01,,46.05231475830078,,
416
+ 1934-07-01,,74.12950897216797,,
417
+ 1934-08-01,,49.639156341552734,,
418
+ 1934-09-01,,61.617191314697266,,
419
+ 1934-10-01,,43.60335159301758,,
420
+ 1934-11-01,,46.434783935546875,,
421
+ 1934-12-01,,61.0857048034668,,
422
+ 1935-01-01,,45.45946502685547,,
423
+ 1935-02-01,,50.46663284301758,,
424
+ 1935-03-01,,67.36476135253906,,
425
+ 1935-04-01,,57.24302673339844,,
426
+ 1935-05-01,,44.03459167480469,,
427
+ 1935-06-01,,45.92513656616211,,
428
+ 1935-07-01,,70.68220520019531,,
429
+ 1935-08-01,,88.26073455810547,,
430
+ 1935-09-01,,132.07684326171875,,
431
+ 1935-10-01,,188.74853515625,,
432
+ 1935-11-01,,100.0623550415039,,
433
+ 1935-12-01,,102.66012573242188,,
434
+ 1936-01-01,,80.89762878417969,,
435
+ 1936-02-01,,79.93846893310547,,
436
+ 1936-03-01,,98.9214859008789,,
437
+ 1936-04-01,,71.36610412597656,,
438
+ 1936-05-01,,65.00257110595703,,
439
+ 1936-06-01,,72.53710174560547,,
440
+ 1936-07-01,,82.0948257446289,,
441
+ 1936-08-01,,136.89804077148438,,
442
+ 1936-09-01,,115.92527770996094,,
443
+ 1936-10-01,,93.97209167480469,,
444
+ 1936-11-01,,106.62641906738281,,
445
+ 1936-12-01,,92.65412139892578,,
446
+ 1937-01-01,,86.9389877319336,,
447
+ 1937-02-01,,70.67057800292969,,
448
+ 1937-03-01,,78.50298309326172,,
449
+ 1937-04-01,,73.57921600341797,,
450
+ 1937-05-01,,58.083045959472656,,
451
+ 1937-06-01,,73.04471588134766,,
452
+ 1937-07-01,,99.03997039794922,,
453
+ 1937-08-01,,100.35657501220703,,
454
+ 1937-09-01,,126.11226654052734,,
455
+ 1937-10-01,,109.75839233398438,,
456
+ 1937-11-01,,85.16431427001953,,
457
+ 1937-12-01,,88.4893798828125,,
458
+ 1938-01-01,,77.84064483642578,,
459
+ 1938-02-01,,91.15591430664062,,
460
+ 1938-03-01,,112.18727111816406,,
461
+ 1938-04-01,,81.93951416015625,,
462
+ 1938-05-01,,100.39448547363281,,
463
+ 1938-06-01,,83.6075210571289,,
464
+ 1938-07-01,,77.24514770507812,,
465
+ 1938-08-01,,103.3354263305664,,
466
+ 1938-09-01,,210.74472045898438,,
467
+ 1938-10-01,,140.14175415039062,,
468
+ 1938-11-01,,71.93653869628906,,
469
+ 1938-12-01,,74.1583480834961,,
470
+ 1939-01-01,,117.61184692382812,,
471
+ 1939-02-01,,97.05760955810547,,
472
+ 1939-03-01,,111.83096313476562,,
473
+ 1939-04-01,,141.7838897705078,,
474
+ 1939-05-01,,86.45950317382812,,
475
+ 1939-06-01,,104.21895599365234,,
476
+ 1939-07-01,,122.50336456298828,,
477
+ 1939-08-01,,181.1328887939453,,
478
+ 1939-09-01,,484.18829345703125,,
479
+ 1939-10-01,,350.2745666503906,,
480
+ 1939-11-01,,267.2019958496094,,
481
+ 1939-12-01,,227.91989135742188,,
482
+ 1940-01-01,,193.37118530273438,,
483
+ 1940-02-01,,190.7722930908203,,
484
+ 1940-03-01,,160.76210021972656,,
485
+ 1940-04-01,,196.9032745361328,,
486
+ 1940-05-01,,261.62060546875,,
487
+ 1940-06-01,,260.6170349121094,,
488
+ 1940-07-01,,209.87860107421875,,
489
+ 1940-08-01,,212.50050354003906,,
490
+ 1940-09-01,,187.9911346435547,,
491
+ 1940-10-01,,178.5435791015625,,
492
+ 1940-11-01,,167.9485626220703,,
493
+ 1940-12-01,,179.95416259765625,,
494
+ 1941-01-01,,208.482177734375,,
495
+ 1941-02-01,,206.45443725585938,,
496
+ 1941-03-01,,208.71340942382812,,
497
+ 1941-04-01,,235.87416076660156,,
498
+ 1941-05-01,,226.9963836669922,,
499
+ 1941-06-01,,249.62649536132812,,
500
+ 1941-07-01,,257.7549133300781,,
501
+ 1941-08-01,,227.4700469970703,,
502
+ 1941-09-01,,221.70928955078125,,
503
+ 1941-10-01,,207.93081665039062,,
504
+ 1941-11-01,,204.56776428222656,,
505
+ 1941-12-01,,447.508544921875,,
506
+ 1942-01-01,,338.9930114746094,,
507
+ 1942-02-01,,328.9259948730469,,
508
+ 1942-03-01,,280.3206787109375,,
509
+ 1942-04-01,,287.121337890625,,
510
+ 1942-05-01,,277.5602111816406,,
511
+ 1942-06-01,,296.419921875,,
512
+ 1942-07-01,,292.8392028808594,,
513
+ 1942-08-01,,338.0627136230469,,
514
+ 1942-09-01,,294.4718933105469,,
515
+ 1942-10-01,,298.26123046875,,
516
+ 1942-11-01,,308.5858459472656,,
517
+ 1942-12-01,,332.12518310546875,,
518
+ 1943-01-01,,319.0300598144531,,
519
+ 1943-02-01,,328.5752868652344,,
520
+ 1943-03-01,,335.37103271484375,,
521
+ 1943-04-01,,309.93890380859375,,
522
+ 1943-05-01,,340.5239562988281,,
523
+ 1943-06-01,,352.0422668457031,,
524
+ 1943-07-01,,402.7427978515625,,
525
+ 1943-08-01,,367.2891845703125,,
526
+ 1943-09-01,,401.10394287109375,,
527
+ 1943-10-01,,323.5034484863281,,
528
+ 1943-11-01,,313.2484436035156,,
529
+ 1943-12-01,,339.35675048828125,,
530
+ 1944-01-01,,363.1461486816406,,
531
+ 1944-02-01,,350.92218017578125,,
532
+ 1944-03-01,,331.27362060546875,,
533
+ 1944-04-01,,352.4859924316406,,
534
+ 1944-05-01,,389.8532409667969,,
535
+ 1944-06-01,,473.21649169921875,,
536
+ 1944-07-01,,396.89202880859375,,
537
+ 1944-08-01,,417.7857666015625,,
538
+ 1944-09-01,,390.09014892578125,,
539
+ 1944-10-01,,354.89141845703125,,
540
+ 1944-11-01,,341.0667419433594,,
541
+ 1944-12-01,,359.2229919433594,,
542
+ 1945-01-01,,326.9896545410156,,
543
+ 1945-02-01,,314.14422607421875,,
544
+ 1945-03-01,,321.1037292480469,,
545
+ 1945-04-01,,277.5852966308594,,
546
+ 1945-05-01,,231.92535400390625,,
547
+ 1945-06-01,,239.47850036621094,,
548
+ 1945-07-01,,254.03851318359375,,
549
+ 1945-08-01,,280.3399963378906,,
550
+ 1945-09-01,,158.33892822265625,,
551
+ 1945-10-01,,176.29734802246094,,
552
+ 1945-11-01,,176.1805419921875,,
553
+ 1945-12-01,,132.40530395507812,,
554
+ 1946-01-01,,136.21463012695312,,
555
+ 1946-02-01,,122.52926635742188,,
556
+ 1946-03-01,,131.415771484375,,
557
+ 1946-04-01,,115.98953247070312,,
558
+ 1946-05-01,,124.81855773925781,,
559
+ 1946-06-01,,123.56192779541016,,
560
+ 1946-07-01,,128.63035583496094,,
561
+ 1946-08-01,,122.59355163574219,,
562
+ 1946-09-01,,132.15341186523438,,
563
+ 1946-10-01,,115.05048370361328,,
564
+ 1946-11-01,,104.2725830078125,,
565
+ 1946-12-01,,109.54686737060547,,
566
+ 1947-01-01,,102.46404266357422,,
567
+ 1947-02-01,,97.77433013916016,,
568
+ 1947-03-01,,118.67977142333984,,
569
+ 1947-04-01,,102.74864196777344,,
570
+ 1947-05-01,,90.15819549560547,,
571
+ 1947-06-01,,87.49806213378906,,
572
+ 1947-07-01,,111.11567687988281,,
573
+ 1947-08-01,,112.92383575439453,,
574
+ 1947-09-01,,99.36425018310547,,
575
+ 1947-10-01,,91.35353088378906,,
576
+ 1947-11-01,,85.0682144165039,,
577
+ 1947-12-01,,92.0465316772461,,
578
+ 1948-01-01,,90.19718170166016,,
579
+ 1948-02-01,,101.24353790283203,,
580
+ 1948-03-01,,139.1269073486328,,
581
+ 1948-04-01,,125.58924865722656,,
582
+ 1948-05-01,,128.97213745117188,,
583
+ 1948-06-01,,105.3296890258789,,
584
+ 1948-07-01,,139.153076171875,,
585
+ 1948-08-01,,106.92613220214844,,
586
+ 1948-09-01,,121.50931549072266,,
587
+ 1948-10-01,,129.3592987060547,,
588
+ 1948-11-01,,99.35396575927734,,
589
+ 1948-12-01,,85.41590881347656,,
590
+ 1949-01-01,,90.29173278808594,,
591
+ 1949-02-01,,90.19142150878906,,
592
+ 1949-03-01,,76.28336334228516,,
593
+ 1949-04-01,,91.95882415771484,,
594
+ 1949-05-01,,93.0523681640625,,
595
+ 1949-06-01,,81.83934020996094,,
596
+ 1949-07-01,,79.78976440429688,,
597
+ 1949-08-01,,88.27278900146484,,
598
+ 1949-09-01,,94.78289031982422,,
599
+ 1949-10-01,,83.74728393554688,,
600
+ 1949-11-01,,66.26329040527344,,
601
+ 1949-12-01,,68.21327209472656,,
602
+ 1950-01-01,,75.76980590820312,,
603
+ 1950-02-01,,101.8079605102539,,
604
+ 1950-03-01,,74.70016479492188,,
605
+ 1950-04-01,,77.92121124267578,,
606
+ 1950-05-01,,84.77960968017578,,
607
+ 1950-06-01,,102.63823699951172,,
608
+ 1950-07-01,,242.3643798828125,,
609
+ 1950-08-01,,229.5492706298828,,
610
+ 1950-09-01,,190.14785766601562,,
611
+ 1950-10-01,,140.0428009033203,,
612
+ 1950-11-01,,156.133544921875,,
613
+ 1950-12-01,,237.10702514648438,,
614
+ 1951-01-01,,215.7411346435547,,
615
+ 1951-02-01,,181.3081817626953,,
616
+ 1951-03-01,,148.58433532714844,,
617
+ 1951-04-01,,153.0889892578125,,
618
+ 1951-05-01,,185.57162475585938,,
619
+ 1951-06-01,,145.98741149902344,,
620
+ 1951-07-01,,147.3849334716797,,
621
+ 1951-08-01,,142.89854431152344,,
622
+ 1951-09-01,,117.81254577636719,,
623
+ 1951-10-01,,151.99562072753906,,
624
+ 1951-11-01,,144.30978393554688,,
625
+ 1951-12-01,,118.5394058227539,,
626
+ 1952-01-01,,136.6841583251953,,
627
+ 1952-02-01,,109.9864273071289,,
628
+ 1952-03-01,,100.5423583984375,,
629
+ 1952-04-01,,100.3922119140625,,
630
+ 1952-05-01,,111.62303161621094,,
631
+ 1952-06-01,,114.96894073486328,,
632
+ 1952-07-01,,94.67417907714844,,
633
+ 1952-08-01,,88.67388153076172,,
634
+ 1952-09-01,,98.13611602783203,,
635
+ 1952-10-01,,110.67723846435547,,
636
+ 1952-11-01,,100.03401947021484,,
637
+ 1952-12-01,,94.56012725830078,,
638
+ 1953-01-01,,91.2088623046875,,
639
+ 1953-02-01,,132.77706909179688,,
640
+ 1953-03-01,,109.0021743774414,,
641
+ 1953-04-01,,100.99649810791016,,
642
+ 1953-05-01,,109.35395812988281,,
643
+ 1953-06-01,,117.97201538085938,,
644
+ 1953-07-01,,111.8611831665039,,
645
+ 1953-08-01,,105.12745666503906,,
646
+ 1953-09-01,,86.946533203125,,
647
+ 1953-10-01,,100.08676147460938,,
648
+ 1953-11-01,,59.44744110107422,,
649
+ 1953-12-01,,98.37127685546875,,
650
+ 1954-01-01,,83.44082641601562,,
651
+ 1954-02-01,,78.85304260253906,,
652
+ 1954-03-01,,100.2618637084961,,
653
+ 1954-04-01,,127.52432250976562,,
654
+ 1954-05-01,,83.3118667602539,,
655
+ 1954-06-01,,119.2347640991211,,
656
+ 1954-07-01,,109.87887573242188,,
657
+ 1954-08-01,,81.68243408203125,,
658
+ 1954-09-01,,79.41703033447266,,
659
+ 1954-10-01,,61.676513671875,,
660
+ 1954-11-01,,85.97054290771484,,
661
+ 1954-12-01,,81.42528533935547,,
662
+ 1955-01-01,,96.20972442626953,,
663
+ 1955-02-01,,110.46392822265625,,
664
+ 1955-03-01,,116.491455078125,,
665
+ 1955-04-01,,99.86804962158203,,
666
+ 1955-05-01,,80.87391662597656,,
667
+ 1955-06-01,,84.1080093383789,,
668
+ 1955-07-01,,80.58653259277344,,
669
+ 1955-08-01,,84.72102355957031,,
670
+ 1955-09-01,,79.8739013671875,,
671
+ 1955-10-01,,77.30744934082031,,
672
+ 1955-11-01,,80.78421020507812,,
673
+ 1955-12-01,,78.1252212524414,,
674
+ 1956-01-01,,101.664794921875,,
675
+ 1956-02-01,,114.98826599121094,,
676
+ 1956-03-01,,96.028564453125,,
677
+ 1956-04-01,,87.8168716430664,,
678
+ 1956-05-01,,79.92201232910156,,
679
+ 1956-06-01,,83.62297821044922,,
680
+ 1956-07-01,,87.74463653564453,,
681
+ 1956-08-01,,91.8788833618164,,
682
+ 1956-09-01,,87.93463897705078,,
683
+ 1956-10-01,,112.37371826171875,,
684
+ 1956-11-01,,167.70657348632812,,
685
+ 1956-12-01,,103.38310241699219,,
686
+ 1957-01-01,,112.1222152709961,,
687
+ 1957-02-01,,125.36201477050781,,
688
+ 1957-03-01,,78.94539642333984,,
689
+ 1957-04-01,,97.71640014648438,,
690
+ 1957-05-01,,102.37721252441406,,
691
+ 1957-06-01,,99.81275177001953,,
692
+ 1957-07-01,,95.03514099121094,,
693
+ 1957-08-01,,82.27916717529297,,
694
+ 1957-09-01,,80.46887969970703,,
695
+ 1957-10-01,,110.60067749023438,,
696
+ 1957-11-01,,101.67893981933594,,
697
+ 1957-12-01,,105.5080795288086,,
698
+ 1958-01-01,,102.10115051269531,,
699
+ 1958-02-01,,113.79354095458984,,
700
+ 1958-03-01,,108.72966003417969,,
701
+ 1958-04-01,,136.06593322753906,,
702
+ 1958-05-01,,113.26227569580078,,
703
+ 1958-06-01,,97.34893035888672,,
704
+ 1958-07-01,,155.7167205810547,,
705
+ 1958-08-01,,123.11936950683594,,
706
+ 1958-09-01,,133.8649139404297,,
707
+ 1958-10-01,,103.4050064086914,,
708
+ 1958-11-01,,98.7123794555664,,
709
+ 1958-12-01,,96.53560638427734,,
710
+ 1959-01-01,,74.92053985595703,,
711
+ 1959-02-01,,76.67919921875,,
712
+ 1959-03-01,,99.13396453857422,,
713
+ 1959-04-01,,86.49523162841797,,
714
+ 1959-05-01,,88.20805358886719,,
715
+ 1959-06-01,,94.79708099365234,,
716
+ 1959-07-01,,83.83183288574219,,
717
+ 1959-08-01,,91.04661560058594,,
718
+ 1959-09-01,,82.38993835449219,,
719
+ 1959-10-01,,69.59735870361328,,
720
+ 1959-11-01,,70.3912124633789,,
721
+ 1959-12-01,,67.81082916259766,,
722
+ 1960-01-01,,64.65913391113281,,
723
+ 1960-02-01,,90.17893981933594,,
724
+ 1960-03-01,,77.88362121582031,,
725
+ 1960-04-01,,89.76142883300781,,
726
+ 1960-05-01,,100.82586669921875,,
727
+ 1960-06-01,,85.59402465820312,,
728
+ 1960-07-01,,76.75084686279297,,
729
+ 1960-08-01,,97.6755599975586,,
730
+ 1960-09-01,,88.29756927490234,,
731
+ 1960-10-01,,92.92769622802734,,
732
+ 1960-11-01,,88.1583251953125,,
733
+ 1960-12-01,,84.30039978027344,,
734
+ 1961-01-01,,89.17472076416016,,
735
+ 1961-02-01,,78.23744201660156,,
736
+ 1961-03-01,,92.80144500732422,,
737
+ 1961-04-01,,132.05430603027344,,
738
+ 1961-05-01,,110.82780456542969,,
739
+ 1961-06-01,,112.12826538085938,,
740
+ 1961-07-01,,141.77932739257812,,
741
+ 1961-08-01,,167.1951446533203,,
742
+ 1961-09-01,,186.13626098632812,,
743
+ 1961-10-01,,131.0919952392578,,
744
+ 1961-11-01,,130.80401611328125,,
745
+ 1961-12-01,,140.77511596679688,,
746
+ 1962-01-01,,105.96036529541016,,
747
+ 1962-02-01,,113.75245666503906,,
748
+ 1962-03-01,,130.29046630859375,,
749
+ 1962-04-01,,116.6429214477539,,
750
+ 1962-05-01,,112.34205627441406,,
751
+ 1962-06-01,,96.7890853881836,,
752
+ 1962-07-01,,93.55087280273438,,
753
+ 1962-08-01,,81.47392272949219,,
754
+ 1962-09-01,,108.884521484375,,
755
+ 1962-10-01,,228.13653564453125,,
756
+ 1962-11-01,,170.65794372558594,,
757
+ 1962-12-01,,138.2330322265625,,
758
+ 1963-01-01,,120.20672607421875,,
759
+ 1963-02-01,,150.01646423339844,,
760
+ 1963-03-01,,119.1106185913086,,
761
+ 1963-04-01,,114.84062194824219,,
762
+ 1963-05-01,,101.78618621826172,,
763
+ 1963-06-01,,90.50883483886719,,
764
+ 1963-07-01,,146.54678344726562,,
765
+ 1963-08-01,,159.15997314453125,,
766
+ 1963-09-01,,120.26571655273438,,
767
+ 1963-10-01,,114.01335906982422,,
768
+ 1963-11-01,,97.13487243652344,,
769
+ 1963-12-01,,77.00877380371094,,
770
+ 1964-01-01,,72.62115478515625,,
771
+ 1964-02-01,,79.194091796875,,
772
+ 1964-03-01,,76.28631591796875,,
773
+ 1964-04-01,,70.8199462890625,,
774
+ 1964-05-01,,72.83729553222656,,
775
+ 1964-06-01,,99.49385833740234,,
776
+ 1964-07-01,,116.09857940673828,,
777
+ 1964-08-01,,126.02654266357422,,
778
+ 1964-09-01,,92.84661865234375,,
779
+ 1964-10-01,,99.39657592773438,,
780
+ 1964-11-01,,84.17487335205078,,
781
+ 1964-12-01,,96.62899017333984,,
782
+ 1965-01-01,,66.43174743652344,,
783
+ 1965-02-01,,87.27833557128906,,
784
+ 1965-03-01,,74.7591781616211,,
785
+ 1965-04-01,,83.22582244873047,,
786
+ 1965-05-01,,107.05209350585938,,
787
+ 1965-06-01,,96.5710678100586,,
788
+ 1965-07-01,,106.20603942871094,,
789
+ 1965-08-01,,102.49994659423828,,
790
+ 1965-09-01,,148.6270294189453,,
791
+ 1965-10-01,,105.90697479248047,,
792
+ 1965-11-01,,96.2056884765625,,
793
+ 1965-12-01,,122.67390441894531,,
794
+ 1966-01-01,,100.83629608154297,,
795
+ 1966-02-01,,110.29782104492188,,
796
+ 1966-03-01,,84.83901977539062,,
797
+ 1966-04-01,,83.17399597167969,,
798
+ 1966-05-01,,88.24566650390625,,
799
+ 1966-06-01,,84.82498168945312,,
800
+ 1966-07-01,,101.36787414550781,,
801
+ 1966-08-01,,90.53927612304688,,
802
+ 1966-09-01,,82.43666076660156,,
803
+ 1966-10-01,,87.21412658691406,,
804
+ 1966-11-01,,84.35037231445312,,
805
+ 1966-12-01,,89.49952697753906,,
806
+ 1967-01-01,,78.87580871582031,,
807
+ 1967-02-01,,93.53082275390625,,
808
+ 1967-03-01,,106.47549438476562,,
809
+ 1967-04-01,,86.28435516357422,,
810
+ 1967-05-01,,124.01653289794922,,
811
+ 1967-06-01,,183.65126037597656,,
812
+ 1967-07-01,,141.924072265625,,
813
+ 1967-08-01,,123.57278442382812,,
814
+ 1967-09-01,,98.46539306640625,,
815
+ 1967-10-01,,104.78156280517578,,
816
+ 1967-11-01,,99.80528259277344,,
817
+ 1967-12-01,,109.89964294433594,,
818
+ 1968-01-01,,120.0167007446289,,
819
+ 1968-02-01,,140.84307861328125,,
820
+ 1968-03-01,,110.75554656982422,,
821
+ 1968-04-01,,106.33563232421875,,
822
+ 1968-05-01,,87.4346923828125,,
823
+ 1968-06-01,,77.73848724365234,,
824
+ 1968-07-01,,106.29724884033203,,
825
+ 1968-08-01,,126.03875732421875,,
826
+ 1968-09-01,,115.4190444946289,,
827
+ 1968-10-01,,90.05001068115234,,
828
+ 1968-11-01,,89.1147689819336,,
829
+ 1968-12-01,,80.36865997314453,,
830
+ 1969-01-01,,98.5400161743164,,
831
+ 1969-02-01,,99.29932403564453,,
832
+ 1969-03-01,,126.85001373291016,,
833
+ 1969-04-01,,106.27946472167969,,
834
+ 1969-05-01,,84.31744384765625,,
835
+ 1969-06-01,,85.46148681640625,,
836
+ 1969-07-01,,91.40158081054688,,
837
+ 1969-08-01,,95.18844604492188,,
838
+ 1969-09-01,,87.56625366210938,,
839
+ 1969-10-01,,85.14434051513672,,
840
+ 1969-11-01,,102.03317260742188,,
841
+ 1969-12-01,,87.36831665039062,,
842
+ 1970-01-01,,93.36079406738281,,
843
+ 1970-02-01,,93.01854705810547,,
844
+ 1970-03-01,,88.9744873046875,,
845
+ 1970-04-01,,88.44861602783203,,
846
+ 1970-05-01,,123.73291015625,,
847
+ 1970-06-01,,93.94159698486328,,
848
+ 1970-07-01,,108.71371459960938,,
849
+ 1970-08-01,,106.96976470947266,,
850
+ 1970-09-01,,177.2829132080078,,
851
+ 1970-10-01,,113.9059829711914,,
852
+ 1970-11-01,,72.02772521972656,,
853
+ 1970-12-01,,73.49131774902344,,
854
+ 1971-01-01,,83.07184600830078,,
855
+ 1971-02-01,,99.541748046875,,
856
+ 1971-03-01,,88.13452911376953,,
857
+ 1971-04-01,,93.0986557006836,,
858
+ 1971-05-01,,73.13999938964844,,
859
+ 1971-06-01,,73.63284301757812,,
860
+ 1971-07-01,,94.81724548339844,,
861
+ 1971-08-01,,79.9136962890625,,
862
+ 1971-09-01,,78.3456039428711,,
863
+ 1971-10-01,,83.19786071777344,,
864
+ 1971-11-01,,91.97172546386719,,
865
+ 1971-12-01,,110.2033920288086,,
866
+ 1972-01-01,,87.94572448730469,,
867
+ 1972-02-01,,78.8551025390625,,
868
+ 1972-03-01,,69.48542785644531,,
869
+ 1972-04-01,,106.54450988769531,,
870
+ 1972-05-01,,128.2822265625,,
871
+ 1972-06-01,,103.57974243164062,,
872
+ 1972-07-01,,79.58895111083984,,
873
+ 1972-08-01,,75.64356231689453,,
874
+ 1972-09-01,,106.85816955566406,,
875
+ 1972-10-01,,73.4010238647461,,
876
+ 1972-11-01,,72.00155639648438,,
877
+ 1972-12-01,,67.63729858398438,,
878
+ 1973-01-01,,64.1259765625,,
879
+ 1973-02-01,,48.90226745605469,,
880
+ 1973-03-01,,64.1389389038086,,
881
+ 1973-04-01,,70.70576477050781,,
882
+ 1973-05-01,,58.97999954223633,,
883
+ 1973-06-01,,54.007816314697266,,
884
+ 1973-07-01,,69.19011688232422,,
885
+ 1973-08-01,,70.10533905029297,,
886
+ 1973-09-01,,64.28269958496094,,
887
+ 1973-10-01,,161.14137268066406,,
888
+ 1973-11-01,,109.2371597290039,,
889
+ 1973-12-01,,85.20231628417969,,
890
+ 1974-01-01,,80.49143981933594,,
891
+ 1974-02-01,,71.60725402832031,,
892
+ 1974-03-01,,76.06338500976562,,
893
+ 1974-04-01,,68.72421264648438,,
894
+ 1974-05-01,,65.31951904296875,,
895
+ 1974-06-01,,69.46392059326172,,
896
+ 1974-07-01,,84.62049865722656,,
897
+ 1974-08-01,,75.68672943115234,,
898
+ 1974-09-01,,53.95918655395508,,
899
+ 1974-10-01,,57.71617889404297,,
900
+ 1974-11-01,,68.77200317382812,,
901
+ 1974-12-01,,74.38534545898438,,
902
+ 1975-01-01,,73.16729736328125,,
903
+ 1975-02-01,,86.05488586425781,,
904
+ 1975-03-01,,87.00109100341797,,
905
+ 1975-04-01,,82.64146423339844,,
906
+ 1975-05-01,,69.51492309570312,,
907
+ 1975-06-01,,73.45471954345703,,
908
+ 1975-07-01,,87.46597290039062,,
909
+ 1975-08-01,,92.53986358642578,,
910
+ 1975-09-01,,69.64713287353516,,
911
+ 1975-10-01,,77.19134521484375,,
912
+ 1975-11-01,,71.16300201416016,,
913
+ 1975-12-01,,79.85717010498047,,
914
+ 1976-01-01,,82.4615478515625,,
915
+ 1976-02-01,,53.81828308105469,,
916
+ 1976-03-01,,69.60106658935547,,
917
+ 1976-04-01,,62.14344787597656,,
918
+ 1976-05-01,,67.54011535644531,,
919
+ 1976-06-01,,68.00221252441406,,
920
+ 1976-07-01,,78.57222747802734,,
921
+ 1976-08-01,,91.08425903320312,,
922
+ 1976-09-01,,69.40160369873047,,
923
+ 1976-10-01,,67.3575439453125,,
924
+ 1976-11-01,,58.60988235473633,,
925
+ 1976-12-01,,62.19698715209961,,
926
+ 1977-01-01,,55.85688018798828,,
927
+ 1977-02-01,,64.89677429199219,,
928
+ 1977-03-01,,61.689422607421875,,
929
+ 1977-04-01,,78.98402404785156,,
930
+ 1977-05-01,,74.19253540039062,,
931
+ 1977-06-01,,67.76715087890625,,
932
+ 1977-07-01,,77.61767578125,,
933
+ 1977-08-01,,72.07817840576172,,
934
+ 1977-09-01,,63.82621383666992,,
935
+ 1977-10-01,,78.11302947998047,,
936
+ 1977-11-01,,70.12207794189453,,
937
+ 1977-12-01,,56.55726623535156,,
938
+ 1978-01-01,,65.3714370727539,,
939
+ 1978-02-01,,80.86685180664062,,
940
+ 1978-03-01,,101.27259063720703,,
941
+ 1978-04-01,,76.17948913574219,,
942
+ 1978-05-01,,111.73175811767578,,
943
+ 1978-06-01,,97.30580139160156,,
944
+ 1978-07-01,,86.6430435180664,,
945
+ 1978-08-01,,66.59713745117188,,
946
+ 1978-09-01,,71.80133056640625,,
947
+ 1978-10-01,,65.73056030273438,,
948
+ 1978-11-01,,75.7578125,,
949
+ 1978-12-01,,77.19337463378906,,
950
+ 1979-01-01,,84.88912963867188,,
951
+ 1979-02-01,,95.47034454345703,,
952
+ 1979-03-01,,91.03933715820312,,
953
+ 1979-04-01,,94.2980728149414,,
954
+ 1979-05-01,,77.9273910522461,,
955
+ 1979-06-01,,99.5243148803711,,
956
+ 1979-07-01,,81.14990234375,,
957
+ 1979-08-01,,70.08392333984375,,
958
+ 1979-09-01,,74.71395111083984,,
959
+ 1979-10-01,,82.6199951171875,,
960
+ 1979-11-01,,88.66984558105469,,
961
+ 1979-12-01,,95.82673645019531,,
962
+ 1980-01-01,,153.01687622070312,,
963
+ 1980-02-01,,108.00233459472656,,
964
+ 1980-03-01,,86.5362319946289,,
965
+ 1980-04-01,,122.74142456054688,,
966
+ 1980-05-01,,86.84213256835938,,
967
+ 1980-06-01,,86.26958465576172,,
968
+ 1980-07-01,,69.79114532470703,,
969
+ 1980-08-01,,73.168212890625,,
970
+ 1980-09-01,,109.17736053466797,,
971
+ 1980-10-01,,127.99614715576172,,
972
+ 1980-11-01,,97.93916320800781,,
973
+ 1980-12-01,,103.21210479736328,,
974
+ 1981-01-01,,111.13887023925781,,
975
+ 1981-02-01,,98.35588836669922,,
976
+ 1981-03-01,,85.73646545410156,,
977
+ 1981-04-01,,106.3973388671875,,
978
+ 1981-05-01,,105.45313262939453,,
979
+ 1981-06-01,,118.5578842163086,,
980
+ 1981-07-01,,86.87128448486328,,
981
+ 1981-08-01,,93.57164001464844,,
982
+ 1981-09-01,,89.85004425048828,,
983
+ 1981-10-01,,89.60053253173828,,
984
+ 1981-11-01,,109.2118148803711,,
985
+ 1981-12-01,,125.28536224365234,,
986
+ 1982-01-01,,112.33251953125,,
987
+ 1982-02-01,,107.06198120117188,,
988
+ 1982-03-01,,123.90110778808594,,
989
+ 1982-04-01,,172.81390380859375,,
990
+ 1982-05-01,,161.01025390625,,
991
+ 1982-06-01,,168.8617706298828,,
992
+ 1982-07-01,,131.4662628173828,,
993
+ 1982-08-01,,105.81861877441406,,
994
+ 1982-09-01,,92.68759155273438,,
995
+ 1982-10-01,,106.7619400024414,,
996
+ 1982-11-01,,104.80567932128906,,
997
+ 1982-12-01,,101.89381408691406,,
998
+ 1983-01-01,,91.13622283935547,,
999
+ 1983-02-01,,86.43841552734375,,
1000
+ 1983-03-01,,84.6499252319336,,
1001
+ 1983-04-01,,113.75682067871094,,
1002
+ 1983-05-01,,98.6867446899414,,
1003
+ 1983-06-01,,99.61585235595703,,
1004
+ 1983-07-01,,89.69205474853516,,
1005
+ 1983-08-01,,84.07736206054688,,
1006
+ 1983-09-01,,126.1341781616211,,
1007
+ 1983-10-01,,125.77522277832031,,
1008
+ 1983-11-01,,131.7056121826172,,
1009
+ 1983-12-01,,114.88968658447266,,
1010
+ 1984-01-01,,99.82249450683594,,
1011
+ 1984-02-01,,87.46898651123047,,
1012
+ 1984-03-01,,84.17267608642578,,
1013
+ 1984-04-01,,90.04610443115234,,
1014
+ 1984-05-01,,94.12640380859375,,
1015
+ 1984-06-01,,94.06307220458984,,
1016
+ 1984-07-01,,65.32867431640625,,
1017
+ 1984-08-01,,71.37344360351562,,
1018
+ 1984-09-01,,93.1370620727539,,
1019
+ 1984-10-01,,93.22408294677734,,
1020
+ 1984-11-01,,92.71788787841797,,
1021
+ 1984-12-01,,95.19149780273438,,
1022
+ 1985-01-01,102.17337799072266,87.15320587158203,107.57417297363281,89.64749145507812
1023
+ 1985-02-01,117.10202026367188,99.5522689819336,126.4427261352539,96.60166931152344
1024
+ 1985-03-01,124.77815246582031,103.82247161865234,127.07085418701172,116.98727416992188
1025
+ 1985-04-01,87.92900085449219,74.30415344238281,94.64019775390625,73.75779724121094
1026
+ 1985-05-01,103.26284790039062,84.36409759521484,111.15978240966797,92.27672576904297
1027
+ 1985-06-01,148.78282165527344,133.50326538085938,134.65670776367188,174.1437530517578
1028
+ 1985-07-01,133.90542602539062,114.45590209960938,126.30107879638672,149.5423583984375
1029
+ 1985-08-01,82.78410339355469,65.6230239868164,75.26383972167969,84.87953186035156
1030
+ 1985-09-01,102.43449401855469,84.28641510009766,101.56950378417969,92.48631286621094
1031
+ 1985-10-01,105.99191284179688,93.57068634033203,91.34220886230469,118.73129272460938
1032
+ 1985-11-01,94.84818267822266,85.8834228515625,98.25837707519531,80.12213897705078
1033
+ 1985-12-01,96.4211654663086,80.88300323486328,80.3045654296875,111.21063232421875
1034
+ 1986-01-01,135.36074829101562,106.45464324951172,137.66831970214844,166.0226287841797
1035
+ 1986-02-01,98.75003051757812,81.32550048828125,84.02117919921875,114.81560516357422
1036
+ 1986-03-01,98.67667388916016,84.73036193847656,85.12946319580078,117.56116485595703
1037
+ 1986-04-01,148.31385803222656,136.7578582763672,142.49339294433594,182.87278747558594
1038
+ 1986-05-01,117.38924407958984,91.70619201660156,126.68498992919922,114.20220947265625
1039
+ 1986-06-01,96.29425048828125,76.17398071289062,106.94334411621094,80.0658187866211
1040
+ 1986-07-01,94.70178985595703,78.52931213378906,99.80805206298828,83.9753189086914
1041
+ 1986-08-01,103.34593963623047,83.76042938232422,104.75926971435547,99.84519958496094
1042
+ 1986-09-01,117.1078872680664,96.58828735351562,106.35902404785156,126.74607849121094
1043
+ 1986-10-01,96.79243469238281,90.36180877685547,109.01692199707031,77.40582275390625
1044
+ 1986-11-01,109.77281951904297,95.00690460205078,124.65135192871094,89.47162628173828
1045
+ 1986-12-01,89.75377655029297,79.09990692138672,93.46377563476562,78.10250091552734
1046
+ 1987-01-01,96.94281768798828,83.18221282958984,90.4955062866211,104.48915100097656
1047
+ 1987-02-01,100.683349609375,83.09893035888672,109.72402954101562,89.29598236083984
1048
+ 1987-03-01,89.60771942138672,72.18781280517578,105.55125427246094,67.09355163574219
1049
+ 1987-04-01,113.39408111572266,96.94609069824219,117.12814331054688,99.12645721435547
1050
+ 1987-05-01,98.65091705322266,82.95381164550781,97.37140655517578,95.23518371582031
1051
+ 1987-06-01,94.18240356445312,76.2452621459961,99.82925415039062,81.82940673828125
1052
+ 1987-07-01,98.87196350097656,82.4146728515625,107.52894592285156,88.26481628417969
1053
+ 1987-08-01,99.96844482421875,85.95735168457031,115.48031616210938,87.60133361816406
1054
+ 1987-09-01,121.16707611083984,102.23164367675781,143.4519805908203,97.5398178100586
1055
+ 1987-10-01,101.05858612060547,81.7320785522461,110.70101928710938,88.82691192626953
1056
+ 1987-11-01,96.15348815917969,81.29553985595703,110.79949951171875,75.88374328613281
1057
+ 1987-12-01,109.85638427734375,95.86166381835938,124.4972915649414,88.26872253417969
1058
+ 1988-01-01,83.20153045654297,72.00155639648438,87.14092254638672,72.89557647705078
1059
+ 1988-02-01,86.20614624023438,72.5431900024414,90.18925476074219,73.8230972290039
1060
+ 1988-03-01,110.20651245117188,94.23165893554688,105.9420166015625,109.30101776123047
1061
+ 1988-04-01,119.45051574707031,98.63134765625,113.93638610839844,128.48338317871094
1062
+ 1988-05-01,104.87347412109375,88.93567657470703,106.54883575439453,97.1541748046875
1063
+ 1988-06-01,79.70812225341797,64.0826416015625,74.01183319091797,81.0764389038086
1064
+ 1988-07-01,83.43048095703125,66.69847869873047,70.79203796386719,96.27418518066406
1065
+ 1988-08-01,84.05416107177734,67.89134979248047,73.71106719970703,93.28092193603516
1066
+ 1988-09-01,74.84265899658203,63.650970458984375,72.93437957763672,74.3477783203125
1067
+ 1988-10-01,73.45023345947266,60.807071685791016,71.80867004394531,65.83024597167969
1068
+ 1988-11-01,68.79841613769531,55.074039459228516,55.85908508300781,77.55838012695312
1069
+ 1988-12-01,90.39871978759766,69.45197296142578,82.27973937988281,94.38412475585938
1070
+ 1989-01-01,89.24658966064453,78.83099365234375,89.09522247314453,82.81503295898438
1071
+ 1989-02-01,91.6185531616211,85.9325180053711,88.43746948242188,91.77456665039062
1072
+ 1989-03-01,87.73377227783203,75.94684600830078,79.90110778808594,93.08662414550781
1073
+ 1989-04-01,83.57909393310547,74.17369079589844,77.83438873291016,84.56328582763672
1074
+ 1989-05-01,103.82850646972656,90.97917938232422,116.75053405761719,80.26698303222656
1075
+ 1989-06-01,89.46155548095703,78.67909240722656,97.67894744873047,68.48663330078125
1076
+ 1989-07-01,84.75310516357422,74.37169647216797,84.32604217529297,78.8324966430664
1077
+ 1989-08-01,109.17729187011719,96.0447769165039,115.9572525024414,115.18624114990234
1078
+ 1989-09-01,85.54584503173828,74.32809448242188,79.4195785522461,88.94374084472656
1079
+ 1989-10-01,69.52467346191406,59.34564208984375,68.15611267089844,64.53548431396484
1080
+ 1989-11-01,92.8287124633789,86.77711486816406,71.7497329711914,112.52256774902344
1081
+ 1989-12-01,112.55352783203125,99.57743072509766,101.52501678466797,128.65443420410156
1082
+ 1990-01-01,81.5440444946289,70.6579818725586,76.01142120361328,80.72607421875
1083
+ 1990-02-01,77.40721130371094,70.49386596679688,81.10881042480469,65.3890380859375
1084
+ 1990-03-01,67.5919418334961,61.825965881347656,68.18672180175781,59.72285842895508
1085
+ 1990-04-01,81.64384460449219,70.28524780273438,97.97654724121094,54.79267120361328
1086
+ 1990-05-01,86.40711975097656,79.50737762451172,97.81657409667969,66.84378051757812
1087
+ 1990-06-01,79.68110656738281,69.35211944580078,72.84642028808594,80.65287780761719
1088
+ 1990-07-01,85.78742980957031,73.71248626708984,82.36925506591797,81.84713745117188
1089
+ 1990-08-01,250.45108032226562,191.88804626464844,353.76312255859375,128.2501983642578
1090
+ 1990-09-01,188.66053771972656,143.62493896484375,262.1236267089844,106.9548110961914
1091
+ 1990-10-01,143.85256958007812,115.00015258789062,172.9463653564453,105.10758972167969
1092
+ 1990-11-01,158.74354553222656,131.2965850830078,201.18106079101562,115.40345764160156
1093
+ 1990-12-01,153.1624298095703,128.08114624023438,194.64852905273438,103.18325805664062
1094
+ 1991-01-01,379.2497863769531,250.39834594726562,360.0328063964844,479.7158508300781
1095
+ 1991-02-01,339.3580322265625,238.83009338378906,253.7916259765625,490.27374267578125
1096
+ 1991-03-01,148.61831665039062,122.96369934082031,133.98248291015625,171.39544677734375
1097
+ 1991-04-01,97.760009765625,84.39409637451172,100.77496337890625,88.50554656982422
1098
+ 1991-05-01,88.56902313232422,77.86150360107422,95.45738983154297,79.06768798828125
1099
+ 1991-06-01,87.73383331298828,72.04704284667969,99.7988510131836,69.48858642578125
1100
+ 1991-07-01,115.18467712402344,95.57931518554688,144.65106201171875,84.731201171875
1101
+ 1991-08-01,113.49502563476562,88.10120391845703,133.4146728515625,87.34529113769531
1102
+ 1991-09-01,117.94219207763672,96.6939468383789,154.14364624023438,74.79663848876953
1103
+ 1991-10-01,100.8318099975586,88.12837982177734,122.6444320678711,77.95648193359375
1104
+ 1991-11-01,100.7423324584961,75.96072387695312,120.3302230834961,77.58206176757812
1105
+ 1991-12-01,103.96953582763672,91.3699951171875,135.23251342773438,58.747432708740234
1106
+ 1992-01-01,102.95763397216797,85.80904388427734,126.1564712524414,69.45668029785156
1107
+ 1992-02-01,87.2034683227539,77.41297149658203,101.0959701538086,62.860504150390625
1108
+ 1992-03-01,85.29731750488281,70.10678100585938,107.12957000732422,53.69252014160156
1109
+ 1992-04-01,85.85562133789062,80.69824981689453,92.64119720458984,74.40125274658203
1110
+ 1992-05-01,78.96814727783203,74.29265594482422,93.08229064941406,56.43539047241211
1111
+ 1992-06-01,93.84909057617188,85.2381820678711,124.33613586425781,49.73001480102539
1112
+ 1992-07-01,75.19676971435547,70.39669799804688,92.42886352539062,51.642940521240234
1113
+ 1992-08-01,81.64519500732422,71.20525360107422,87.55679321289062,70.1595230102539
1114
+ 1992-09-01,74.6097183227539,72.06087493896484,92.68926239013672,45.73872375488281
1115
+ 1992-10-01,68.18277740478516,60.012916564941406,71.33625793457031,58.99306106567383
1116
+ 1992-11-01,91.00899505615234,89.05217742919922,109.6229248046875,68.5569076538086
1117
+ 1992-12-01,83.42096710205078,75.00589752197266,97.29403686523438,60.88547134399414
1118
+ 1993-01-01,128.91807556152344,108.96617889404297,144.89353942871094,114.82777404785156
1119
+ 1993-02-01,90.46806335449219,78.24684143066406,105.26100158691406,64.63740539550781
1120
+ 1993-03-01,94.24144744873047,80.51728820800781,99.9146728515625,80.28809356689453
1121
+ 1993-04-01,112.72166442871094,96.78633880615234,144.0390167236328,72.71391296386719
1122
+ 1993-05-01,110.72975158691406,92.49911499023438,137.38629150390625,77.88386535644531
1123
+ 1993-06-01,104.19525146484375,86.13467407226562,125.46405029296875,73.33211517333984
1124
+ 1993-07-01,123.31478881835938,109.43024444580078,131.75840759277344,107.0821533203125
1125
+ 1993-08-01,97.2416763305664,73.85224914550781,97.08562469482422,94.7355728149414
1126
+ 1993-09-01,89.16477966308594,81.248291015625,97.45659637451172,76.93018341064453
1127
+ 1993-10-01,106.16590881347656,92.53211212158203,130.3068084716797,65.22377014160156
1128
+ 1993-11-01,83.48017883300781,71.4906005859375,105.1309585571289,51.35593795776367
1129
+ 1993-12-01,79.55179595947266,67.78836059570312,97.06568145751953,50.134674072265625
1130
+ 1994-01-01,83.48997497558594,70.5134506225586,93.09183502197266,65.27042388916016
1131
+ 1994-02-01,117.2420654296875,114.30062866210938,148.14723205566406,76.48810577392578
1132
+ 1994-03-01,93.47403717041016,85.84061431884766,98.56234741210938,79.4195327758789
1133
+ 1994-04-01,95.35697174072266,84.94855499267578,116.44586181640625,68.70893859863281
1134
+ 1994-05-01,104.46678924560547,99.95525360107422,122.97669982910156,73.90620422363281
1135
+ 1994-06-01,120.35224151611328,107.44220733642578,148.2960662841797,79.9498519897461
1136
+ 1994-07-01,99.6402359008789,95.88887023925781,115.40325927734375,75.47087860107422
1137
+ 1994-08-01,98.2270278930664,77.08316802978516,122.92201232910156,66.64015197753906
1138
+ 1994-09-01,98.89848327636719,81.29356384277344,131.31796264648438,51.336830139160156
1139
+ 1994-10-01,94.85363006591797,82.31258392333984,118.89933776855469,64.50569152832031
1140
+ 1994-11-01,86.5298080444336,75.44895935058594,100.79308319091797,70.68946075439453
1141
+ 1994-12-01,96.04750061035156,88.57254028320312,107.74173736572266,81.61609649658203
1142
+ 1995-01-01,80.15467834472656,67.55069732666016,84.89913940429688,70.47705841064453
1143
+ 1995-02-01,76.87532806396484,73.6552734375,72.59407043457031,77.14599609375
1144
+ 1995-03-01,82.24444580078125,71.8489990234375,79.15904235839844,79.87528991699219
1145
+ 1995-04-01,99.19087982177734,95.97047424316406,93.92303466796875,99.14794158935547
1146
+ 1995-05-01,87.842529296875,77.51907348632812,96.40919494628906,79.34961700439453
1147
+ 1995-06-01,104.60775756835938,91.79554748535156,121.57904815673828,85.1209487915039
1148
+ 1995-07-01,107.64541625976562,93.18329620361328,115.32476806640625,100.19744873046875
1149
+ 1995-08-01,106.93478393554688,97.2186050415039,118.4973373413086,100.7674560546875
1150
+ 1995-09-01,71.20516967773438,55.59844970703125,72.98401641845703,68.81755065917969
1151
+ 1995-10-01,67.74150085449219,52.83597946166992,64.2778091430664,69.12648010253906
1152
+ 1995-11-01,76.33349609375,60.75272750854492,78.8126220703125,69.86588287353516
1153
+ 1995-12-01,65.67205810546875,63.13649368286133,68.98201751708984,55.363800048828125
1154
+ 1996-01-01,75.63492584228516,65.88229370117188,73.66007995605469,79.68246459960938
1155
+ 1996-02-01,80.4209213256836,69.67424011230469,85.9759750366211,69.15779113769531
1156
+ 1996-03-01,82.14761352539062,67.63689422607422,77.89100646972656,84.08819580078125
1157
+ 1996-04-01,84.82862091064453,64.88275909423828,71.23197174072266,98.6463623046875
1158
+ 1996-05-01,65.53082275390625,54.011634826660156,59.1929931640625,68.71073913574219
1159
+ 1996-06-01,69.08858489990234,53.93003463745117,72.52593231201172,61.67017364501953
1160
+ 1996-07-01,80.64431762695312,64.36930847167969,74.90693664550781,85.2721939086914
1161
+ 1996-08-01,81.6876449584961,66.05589294433594,81.7337417602539,85.69389343261719
1162
+ 1996-09-01,88.19697570800781,77.14295196533203,87.04828643798828,92.83900451660156
1163
+ 1996-10-01,55.586830139160156,42.83895492553711,56.879756927490234,49.54435729980469
1164
+ 1996-11-01,57.34461212158203,49.12797164916992,58.0576171875,51.038421630859375
1165
+ 1996-12-01,74.98263549804688,61.40357971191406,80.17862701416016,66.17648315429688
1166
+ 1997-01-01,54.062435150146484,43.276885986328125,53.25782775878906,55.227325439453125
1167
+ 1997-02-01,50.559940338134766,38.706016540527344,54.501365661621094,43.509159088134766
1168
+ 1997-03-01,58.48006057739258,46.35822296142578,56.36629867553711,59.907318115234375
1169
+ 1997-04-01,62.844486236572266,48.406822204589844,62.37605667114258,61.28048324584961
1170
+ 1997-05-01,53.57601547241211,44.15480422973633,53.54428482055664,49.572898864746094
1171
+ 1997-06-01,39.045623779296875,28.030553817749023,36.68563461303711,38.63948059082031
1172
+ 1997-07-01,47.69842529296875,30.98200798034668,47.428409576416016,43.43375015258789
1173
+ 1997-08-01,48.582298278808594,37.338600158691406,46.30862808227539,49.42500305175781
1174
+ 1997-09-01,42.6890869140625,33.78644561767578,41.63934326171875,41.08793258666992
1175
+ 1997-10-01,49.746307373046875,37.505462646484375,58.68946075439453,34.460205078125
1176
+ 1997-11-01,59.6933708190918,51.55691146850586,79.03630828857422,32.765533447265625
1177
+ 1997-12-01,43.998268127441406,35.97464370727539,48.36233139038086,35.839134216308594
1178
+ 1998-01-01,53.0963020324707,37.52287292480469,59.82126998901367,42.487815856933594
1179
+ 1998-02-01,77.59761810302734,57.50653839111328,101.84082794189453,45.368019104003906
1180
+ 1998-03-01,57.24806213378906,45.866554260253906,65.50199890136719,44.5167121887207
1181
+ 1998-04-01,50.99658203125,35.72062683105469,58.76738357543945,38.00284957885742
1182
+ 1998-05-01,94.4734878540039,66.73115539550781,129.79888916015625,43.802757263183594
1183
+ 1998-06-01,76.30907440185547,59.46931838989258,94.95468139648438,48.77885437011719
1184
+ 1998-07-01,54.04841613769531,46.373626708984375,64.22628021240234,38.29932403564453
1185
+ 1998-08-01,97.02085876464844,74.23482513427734,83.93855285644531,123.8387451171875
1186
+ 1998-09-01,62.51344299316406,51.46828842163086,68.4769515991211,55.129615783691406
1187
+ 1998-10-01,54.403648376464844,39.147979736328125,57.89592742919922,48.27804183959961
1188
+ 1998-11-01,67.96592712402344,53.11758804321289,88.07134246826172,38.602264404296875
1189
+ 1998-12-01,75.95989227294922,54.34516143798828,86.2803955078125,64.999755859375
1190
+ 1999-01-01,63.98722457885742,48.8342170715332,69.46121215820312,53.77272033691406
1191
+ 1999-02-01,58.316383361816406,39.02248764038086,67.28399658203125,44.1739501953125
1192
+ 1999-03-01,83.39727783203125,73.28861999511719,89.73835754394531,75.18807983398438
1193
+ 1999-04-01,106.19801330566406,87.20429229736328,112.34139251708984,103.2333755493164
1194
+ 1999-05-01,85.44113159179688,71.05026245117188,89.3775634765625,80.67141723632812
1195
+ 1999-06-01,79.4105453491211,62.73693084716797,75.96134948730469,83.76152038574219
1196
+ 1999-07-01,62.14287185668945,45.099365234375,66.83728790283203,54.25792694091797
1197
+ 1999-08-01,62.858642578125,42.675621032714844,65.2621078491211,57.959991455078125
1198
+ 1999-09-01,69.58151245117188,55.73137283325195,75.54266357421875,62.214027404785156
1199
+ 1999-10-01,72.35348510742188,57.77337646484375,79.38410949707031,60.16195297241211
1200
+ 1999-11-01,57.9638671875,44.12132263183594,60.38698196411133,52.49796676635742
1201
+ 1999-12-01,86.0849380493164,70.17583465576172,95.51082611083984,86.46973419189453
1202
+ 2000-01-01,64.45780944824219,52.966461181640625,65.57360076904297,64.25041198730469
1203
+ 2000-02-01,63.54172134399414,54.46044158935547,57.65135955810547,68.08216857910156
1204
+ 2000-03-01,50.101985931396484,39.38189697265625,55.03073501586914,40.81640625
1205
+ 2000-04-01,48.6827392578125,39.66014862060547,53.30490493774414,40.91702651977539
1206
+ 2000-05-01,79.48287963867188,60.20378875732422,77.26969909667969,83.22781372070312
1207
+ 2000-06-01,64.71781921386719,50.006683349609375,73.57466888427734,53.174400329589844
1208
+ 2000-07-01,51.904022216796875,39.57530212402344,57.31697463989258,41.059078216552734
1209
+ 2000-08-01,46.49225616455078,32.60479736328125,49.192291259765625,41.58592224121094
1210
+ 2000-09-01,52.689998626708984,44.66667556762695,64.44499206542969,35.192142486572266
1211
+ 2000-10-01,76.45652770996094,58.18268966674805,82.38760375976562,77.61014556884766
1212
+ 2000-11-01,45.06056213378906,36.51542282104492,44.357688903808594,47.206809997558594
1213
+ 2000-12-01,45.39509963989258,39.06437683105469,46.16897964477539,43.98335266113281
1214
+ 2001-01-01,46.89955520629883,38.037513732910156,53.70235824584961,38.343318939208984
1215
+ 2001-02-01,55.087711334228516,33.473594665527344,63.68989181518555,45.426673889160156
1216
+ 2001-03-01,61.708953857421875,41.961551666259766,66.72218322753906,56.86698913574219
1217
+ 2001-04-01,50.5687370300293,38.06903076171875,52.7736701965332,47.17219924926758
1218
+ 2001-05-01,60.376861572265625,46.69594955444336,61.344993591308594,56.86418914794922
1219
+ 2001-06-01,72.06433868408203,52.237308502197266,79.31310272216797,64.2144775390625
1220
+ 2001-07-01,61.072940826416016,50.57548904418945,65.49278259277344,52.618770599365234
1221
+ 2001-08-01,64.10773468017578,48.39595031738281,55.23207473754883,74.89220428466797
1222
+ 2001-09-01,498.64788818359375,289.94012451171875,260.16961669921875,841.177490234375
1223
+ 2001-10-01,512.5297241210938,303.5853271484375,261.347412109375,854.074951171875
1224
+ 2001-11-01,306.785888671875,215.27442932128906,149.79522705078125,509.7461242675781
1225
+ 2001-12-01,236.09974670410156,179.27598571777344,126.19801330566406,381.9725036621094
1226
+ 2002-01-01,172.47720336914062,131.61851501464844,106.9162368774414,262.2870178222656
1227
+ 2002-02-01,146.1857147216797,106.10238647460938,95.78031158447266,212.90550231933594
1228
+ 2002-03-01,151.9763641357422,112.14501953125,99.12334442138672,219.96884155273438
1229
+ 2002-04-01,157.49655151367188,114.56562805175781,100.74444580078125,225.64035034179688
1230
+ 2002-05-01,163.3223114013672,118.06430053710938,142.246826171875,209.40878295898438
1231
+ 2002-06-01,149.33042907714844,107.94725036621094,127.7907485961914,189.1234893798828
1232
+ 2002-07-01,122.7783432006836,90.2196273803711,94.34967803955078,168.41973876953125
1233
+ 2002-08-01,127.06451416015625,88.44149017333984,101.69573974609375,157.46444702148438
1234
+ 2002-09-01,174.90333557128906,111.66425323486328,174.5314483642578,188.7191925048828
1235
+ 2002-10-01,172.03192138671875,119.17052459716797,167.02581787109375,197.39906311035156
1236
+ 2002-11-01,159.12759399414062,117.24109649658203,155.0137481689453,179.06283569335938
1237
+ 2002-12-01,175.8117218017578,116.26559448242188,182.9995574951172,175.19842529296875
1238
+ 2003-01-01,206.43460083007812,136.64382934570312,245.8175506591797,176.95985412597656
1239
+ 2003-02-01,239.61093139648438,140.88006591796875,296.7597961425781,213.080322265625
1240
+ 2003-03-01,358.711181640625,244.57215881347656,362.41107177734375,429.1441955566406
1241
+ 2003-04-01,255.77517700195312,209.3073272705078,212.60545349121094,331.6032409667969
1242
+ 2003-05-01,162.1218719482422,131.40335083007812,153.3962860107422,186.8463592529297
1243
+ 2003-06-01,145.7697296142578,126.87512969970703,127.83353424072266,176.91827392578125
1244
+ 2003-07-01,134.89891052246094,119.35786437988281,108.3927993774414,167.4486541748047
1245
+ 2003-08-01,138.23092651367188,112.94558715820312,109.64905548095703,180.0001220703125
1246
+ 2003-09-01,118.19628143310547,102.62300109863281,99.72046661376953,143.5571746826172
1247
+ 2003-10-01,108.3173828125,94.59689331054688,93.02832794189453,129.9432830810547
1248
+ 2003-11-01,118.0866928100586,95.3519287109375,93.33158874511719,153.246337890625
1249
+ 2003-12-01,129.46507263183594,109.33299255371094,107.44403839111328,164.98052978515625
1250
+ 2004-01-01,113.46759033203125,97.67668151855469,106.71729278564453,126.08518981933594
1251
+ 2004-02-01,115.07597351074219,98.95832824707031,104.11482238769531,129.24427795410156
1252
+ 2004-03-01,138.53207397460938,105.24771881103516,109.12393951416016,183.70297241210938
1253
+ 2004-04-01,149.6313934326172,121.12825775146484,121.14622497558594,205.3251953125
1254
+ 2004-05-01,121.0911865234375,105.23765563964844,91.96539306640625,159.94842529296875
1255
+ 2004-06-01,137.23391723632812,125.61060333251953,106.79373931884766,178.03662109375
1256
+ 2004-07-01,131.0198516845703,121.08712005615234,121.26777648925781,159.81219482421875
1257
+ 2004-08-01,140.36582946777344,120.90603637695312,127.44524383544922,176.45431518554688
1258
+ 2004-09-01,153.87161254882812,133.36717224121094,130.20606994628906,189.355224609375
1259
+ 2004-10-01,119.86279296875,105.09821319580078,100.50788116455078,148.24447631835938
1260
+ 2004-11-01,122.70738983154297,107.28926086425781,98.92665100097656,151.67926025390625
1261
+ 2004-12-01,109.89522552490234,86.82955932617188,81.60477447509766,145.225341796875
1262
+ 2005-01-01,100.88758850097656,80.83647918701172,78.19856262207031,128.5348663330078
1263
+ 2005-02-01,108.97796630859375,90.26119232177734,104.7703628540039,108.79598236083984
1264
+ 2005-03-01,90.41048431396484,72.86202239990234,87.22633361816406,87.87673950195312
1265
+ 2005-04-01,87.03240203857422,76.22191619873047,72.53263092041016,102.85391235351562
1266
+ 2005-05-01,98.20596313476562,82.1899185180664,89.93269348144531,104.9098892211914
1267
+ 2005-06-01,81.12405395507812,71.13101959228516,69.88249969482422,93.41752624511719
1268
+ 2005-07-01,165.90191650390625,122.32402038574219,118.1835708618164,237.5650177001953
1269
+ 2005-08-01,116.2276611328125,92.7262191772461,92.68307495117188,143.29122924804688
1270
+ 2005-09-01,103.80766296386719,82.55351257324219,78.45670318603516,130.27203369140625
1271
+ 2005-10-01,87.06182861328125,76.84534454345703,73.18765258789062,105.56188201904297
1272
+ 2005-11-01,83.48009490966797,67.83660125732422,70.60446166992188,96.02958679199219
1273
+ 2005-12-01,95.35025024414062,86.6675033569336,69.64460754394531,130.6789093017578
1274
+ 2006-01-01,94.51001739501953,80.4649658203125,89.32347106933594,100.19158172607422
1275
+ 2006-02-01,95.85819244384766,77.14988708496094,89.40576171875,102.79864501953125
1276
+ 2006-03-01,92.79762268066406,81.51350402832031,88.04222869873047,97.03602600097656
1277
+ 2006-04-01,89.01580047607422,71.68758392333984,85.9110107421875,92.8307113647461
1278
+ 2006-05-01,85.20877838134766,77.79814910888672,84.03312683105469,82.27742767333984
1279
+ 2006-06-01,102.57276916503906,83.38941955566406,90.38453674316406,115.67947387695312
1280
+ 2006-07-01,137.13482666015625,106.79590606689453,134.39634704589844,142.0860595703125
1281
+ 2006-08-01,147.08111572265625,106.37255859375,141.55645751953125,159.18817138671875
1282
+ 2006-09-01,111.72425842285156,99.56560516357422,110.28041076660156,114.77066802978516
1283
+ 2006-10-01,113.13529968261719,91.6651611328125,125.2918930053711,99.27391815185547
1284
+ 2006-11-01,88.77892303466797,75.4869384765625,87.27577209472656,86.71051025390625
1285
+ 2006-12-01,90.60655975341797,80.42727661132812,95.78137969970703,78.7696533203125
1286
+ 2007-01-01,97.9200439453125,94.14461517333984,95.61344909667969,97.65373992919922
1287
+ 2007-02-01,96.16935729980469,88.54644012451172,98.1557388305664,90.95567321777344
1288
+ 2007-03-01,87.33650207519531,74.7906723022461,86.1521224975586,83.9186019897461
1289
+ 2007-04-01,76.6133804321289,73.93408203125,69.22551727294922,83.41928100585938
1290
+ 2007-05-01,92.5995864868164,88.0791015625,82.30323028564453,103.89258575439453
1291
+ 2007-06-01,97.9723129272461,92.15755462646484,87.08059692382812,109.30941009521484
1292
+ 2007-07-01,112.34625244140625,96.17206573486328,103.2634048461914,127.13468170166016
1293
+ 2007-08-01,83.17320251464844,70.5976333618164,73.12574005126953,100.14825439453125
1294
+ 2007-09-01,94.4888687133789,88.08543395996094,94.93997955322266,92.24872589111328
1295
+ 2007-10-01,101.47301483154297,94.4380111694336,103.61026763916016,97.49516296386719
1296
+ 2007-11-01,89.79544830322266,76.52487182617188,95.73847961425781,81.56842803955078
1297
+ 2007-12-01,94.96749114990234,80.95716094970703,98.5313720703125,84.13076782226562
1298
+ 2008-01-01,81.49982452392578,80.7180404663086,76.40237426757812,83.74764251708984
1299
+ 2008-02-01,80.75146484375,79.33844757080078,72.52851104736328,86.75279235839844
1300
+ 2008-03-01,77.63613891601562,67.8318099975586,72.02967834472656,83.48439025878906
1301
+ 2008-04-01,71.9048080444336,68.29821014404297,69.45796966552734,69.99274444580078
1302
+ 2008-05-01,72.57379913330078,65.236572265625,70.67774963378906,74.78978729248047
1303
+ 2008-06-01,87.54842376708984,70.52720642089844,88.88606262207031,80.34490203857422
1304
+ 2008-07-01,89.73957061767578,79.43172454833984,84.3224868774414,88.16068267822266
1305
+ 2008-08-01,88.55410766601562,74.76561737060547,75.76971435546875,105.06571197509766
1306
+ 2008-09-01,88.54255676269531,77.9458236694336,82.01426696777344,94.46100616455078
1307
+ 2008-10-01,64.15979766845703,52.132774353027344,53.11738967895508,75.28266143798828
1308
+ 2008-11-01,79.08097076416016,63.414886474609375,68.30364990234375,95.14356231689453
1309
+ 2008-12-01,92.3664321899414,74.673095703125,83.84313201904297,109.21497344970703
1310
+ 2009-01-01,85.36947631835938,61.334930419921875,86.31317138671875,89.7125473022461
1311
+ 2009-02-01,67.45267486572266,63.04890060424805,64.77291107177734,64.58635711669922
1312
+ 2009-03-01,72.64462280273438,56.75257110595703,69.17710876464844,74.83297729492188
1313
+ 2009-04-01,85.6884994506836,69.48473358154297,84.48536682128906,83.98128509521484
1314
+ 2009-05-01,89.68086242675781,77.43024444580078,86.63702392578125,92.64315032958984
1315
+ 2009-06-01,81.10958862304688,71.35688781738281,80.80081939697266,74.5913314819336
1316
+ 2009-07-01,83.43962097167969,69.4314956665039,82.10675048828125,80.12088012695312
1317
+ 2009-08-01,73.37187957763672,59.94645690917969,64.70917510986328,78.04385375976562
1318
+ 2009-09-01,92.8399887084961,74.60050201416016,97.492919921875,77.7846450805664
1319
+ 2009-10-01,90.57640075683594,81.03946685791016,88.22991180419922,90.4251480102539
1320
+ 2009-11-01,82.10176086425781,66.15752410888672,74.31538391113281,85.0097885131836
1321
+ 2009-12-01,92.94691467285156,84.39598083496094,89.34334564208984,95.87136840820312
1322
+ 2010-01-01,91.58102416992188,78.12442779541016,84.97299194335938,100.41094207763672
1323
+ 2010-02-01,80.72535705566406,71.45984649658203,78.84627532958984,80.71173858642578
1324
+ 2010-03-01,74.116943359375,58.70956802368164,73.49691009521484,70.03934478759766
1325
+ 2010-04-01,88.76158142089844,72.48430633544922,92.05691528320312,81.26840209960938
1326
+ 2010-05-01,88.95870971679688,85.67205047607422,87.49411010742188,85.85739135742188
1327
+ 2010-06-01,96.45369720458984,95.87101745605469,110.69171905517578,70.9886245727539
1328
+ 2010-07-01,79.38137817382812,66.17820739746094,75.18537902832031,84.04823303222656
1329
+ 2010-08-01,80.99386596679688,74.39330291748047,71.95153045654297,85.98257446289062
1330
+ 2010-09-01,71.16854858398438,63.36677169799805,68.94754028320312,69.29395294189453
1331
+ 2010-10-01,65.99193572998047,57.8123893737793,62.0961799621582,76.16891479492188
1332
+ 2010-11-01,94.70516967773438,82.31559753417969,98.68914794921875,83.2665023803711
1333
+ 2010-12-01,97.20389556884766,79.67950439453125,100.3976821899414,91.7621078491211
1334
+ 2011-01-01,79.42161560058594,67.25462341308594,76.59356689453125,78.8069839477539
1335
+ 2011-02-01,90.01448822021484,70.89757537841797,90.18933868408203,85.48683166503906
1336
+ 2011-03-01,136.8883056640625,101.09650421142578,126.96572875976562,157.47984313964844
1337
+ 2011-04-01,91.01776885986328,76.11617279052734,72.92317962646484,111.94474029541016
1338
+ 2011-05-01,105.34491729736328,90.70134735107422,95.50663757324219,123.82610321044922
1339
+ 2011-06-01,84.391845703125,77.34325408935547,71.39112854003906,98.27275848388672
1340
+ 2011-07-01,78.92475891113281,68.41374969482422,59.019046783447266,102.11175537109375
1341
+ 2011-08-01,86.95156860351562,71.48961639404297,63.504676818847656,112.49906158447266
1342
+ 2011-09-01,83.35044860839844,72.50403594970703,70.606689453125,95.26744079589844
1343
+ 2011-10-01,76.33993530273438,66.21006774902344,64.18510437011719,92.34331512451172
1344
+ 2011-11-01,83.15767669677734,70.88019561767578,95.57453155517578,70.11003875732422
1345
+ 2011-12-01,85.34132385253906,75.7466049194336,88.89408111572266,77.47647857666016
1346
+ 2012-01-01,79.63497161865234,68.26786804199219,93.6095962524414,62.06843185424805
1347
+ 2012-02-01,92.4458236694336,76.55004119873047,104.2074966430664,78.59986114501953
1348
+ 2012-03-01,88.75997924804688,74.9962387084961,87.85648345947266,85.85698699951172
1349
+ 2012-04-01,96.01668548583984,78.8109130859375,101.92078399658203,86.38436889648438
1350
+ 2012-05-01,78.17115783691406,70.23249053955078,80.6348876953125,69.74354553222656
1351
+ 2012-06-01,77.82243347167969,61.874813079833984,70.23216247558594,82.17473602294922
1352
+ 2012-07-01,82.80802154541016,67.4638671875,79.33626556396484,91.00080108642578
1353
+ 2012-08-01,74.87835693359375,68.635986328125,70.9891586303711,78.11161804199219
1354
+ 2012-09-01,69.28050994873047,61.441925048828125,68.40282440185547,65.87126159667969
1355
+ 2012-10-01,81.66366577148438,69.4249267578125,74.20600891113281,88.03089904785156
1356
+ 2012-11-01,81.38964080810547,67.28007507324219,75.65846252441406,89.04841613769531
1357
+ 2012-12-01,74.83155822753906,65.62220001220703,66.24052429199219,82.9786148071289
1358
+ 2013-01-01,90.6574935913086,70.8666000366211,84.139892578125,108.9493179321289
1359
+ 2013-02-01,81.59033203125,72.40581512451172,77.60531616210938,85.65817260742188
1360
+ 2013-03-01,75.89672088623047,55.70154571533203,81.89175415039062,69.39681243896484
1361
+ 2013-04-01,95.10787200927734,76.689697265625,99.5219497680664,87.4727554321289
1362
+ 2013-05-01,83.71731567382812,73.34609985351562,75.3292236328125,98.22759246826172
1363
+ 2013-06-01,82.97300720214844,71.18392181396484,78.82188415527344,86.63420104980469
1364
+ 2013-07-01,73.97581481933594,58.958736419677734,71.55718994140625,72.67587280273438
1365
+ 2013-08-01,90.95674896240234,71.75051879882812,80.73957824707031,106.97908782958984
1366
+ 2013-09-01,100.4593276977539,85.7788314819336,100.38423156738281,100.16348266601562
1367
+ 2013-10-01,72.95311737060547,64.70183563232422,65.50166320800781,78.73002624511719
1368
+ 2013-11-01,77.77902221679688,68.73412322998047,92.4988784790039,52.43838119506836
1369
+ 2013-12-01,70.37248992919922,70.1871109008789,70.09461212158203,66.79072570800781
1370
+ 2014-01-01,77.91596984863281,71.98021697998047,70.48076629638672,83.1458969116211
1371
+ 2014-02-01,69.00352478027344,63.780696868896484,73.27865600585938,59.08655548095703
1372
+ 2014-03-01,119.83855438232422,92.21508026123047,151.67477416992188,74.0618896484375
1373
+ 2014-04-01,93.22154235839844,75.93310546875,113.13993072509766,60.90629959106445
1374
+ 2014-05-01,83.4288558959961,73.12313079833984,91.6987533569336,76.15043640136719
1375
+ 2014-06-01,98.76710510253906,82.33184051513672,95.32296752929688,107.18201446533203
1376
+ 2014-07-01,138.7539520263672,104.5683364868164,162.71510314941406,118.54683685302734
1377
+ 2014-08-01,136.44558715820312,96.06314086914062,158.59349060058594,112.11448669433594
1378
+ 2014-09-01,131.55665588378906,104.1304931640625,143.3953857421875,120.78192138671875
1379
+ 2014-10-01,83.66100311279297,68.81330108642578,86.33345031738281,77.19393157958984
1380
+ 2014-11-01,84.38005065917969,67.82101440429688,88.46994018554688,76.33753204345703
1381
+ 2014-12-01,86.5262222290039,69.4857406616211,81.27322387695312,96.23736572265625
1382
+ 2015-01-01,111.9856948852539,94.4410629272461,83.50390625,153.33984375
1383
+ 2015-02-01,111.92469787597656,98.14318084716797,118.22520446777344,107.79053497314453
1384
+ 2015-03-01,104.23526763916016,95.0536117553711,117.48873138427734,83.63285064697266
1385
+ 2015-04-01,102.19049072265625,90.0971908569336,110.18872833251953,95.08645629882812
1386
+ 2015-05-01,76.2623291015625,67.88858795166016,77.66873168945312,72.86188507080078
1387
+ 2015-06-01,85.90596771240234,78.03047943115234,81.06608581542969,88.7894287109375
1388
+ 2015-07-01,106.80866241455078,94.75882720947266,120.84297180175781,86.16881561279297
1389
+ 2015-08-01,82.47853088378906,83.12367248535156,85.33859252929688,74.0282974243164
1390
+ 2015-09-01,98.7674560546875,95.892333984375,115.88518524169922,79.34535217285156
1391
+ 2015-10-01,91.931884765625,90.87059783935547,79.726318359375,108.51441955566406
1392
+ 2015-11-01,150.71588134765625,119.51046752929688,113.04398345947266,213.99351501464844
1393
+ 2015-12-01,148.23687744140625,131.21058654785156,115.224365234375,204.6312713623047
1394
+ 2016-01-01,118.21114349365234,97.50211334228516,124.23914337158203,109.52909851074219
1395
+ 2016-02-01,103.74964904785156,84.31517028808594,91.322021484375,117.58201599121094
1396
+ 2016-03-01,109.72029113769531,93.45272827148438,98.02693176269531,127.76814270019531
1397
+ 2016-04-01,85.22145080566406,85.37211608886719,80.82244110107422,93.12298583984375
1398
+ 2016-05-01,88.3324203491211,77.35427856445312,84.46136474609375,93.63965606689453
1399
+ 2016-06-01,90.16812896728516,74.2213134765625,80.51286315917969,100.85737609863281
1400
+ 2016-07-01,114.6104507446289,90.43106079101562,97.0980453491211,145.14874267578125
1401
+ 2016-08-01,98.73848724365234,79.6497802734375,82.44046783447266,121.45369720458984
1402
+ 2016-09-01,104.54522705078125,94.0345458984375,95.48959350585938,121.15049743652344
1403
+ 2016-10-01,85.74778747558594,77.68973541259766,79.64808654785156,100.30767822265625
1404
+ 2016-11-01,82.91875457763672,71.86234283447266,81.22564697265625,83.97505950927734
1405
+ 2016-12-01,102.18046569824219,86.41724395751953,93.9366226196289,113.97946166992188
1406
+ 2017-01-01,105.20123291015625,86.76187896728516,108.2770004272461,103.17117309570312
1407
+ 2017-02-01,114.20635986328125,98.75232696533203,125.66468048095703,97.15160369873047
1408
+ 2017-03-01,96.63587951660156,80.13410949707031,95.83842468261719,95.67454528808594
1409
+ 2017-04-01,119.45992279052734,93.11141967773438,127.44654846191406,108.06884002685547
1410
+ 2017-05-01,102.57996368408203,78.91045379638672,102.35460662841797,99.70480346679688
1411
+ 2017-06-01,126.78901672363281,105.329345703125,113.16846466064453,146.67166137695312
1412
+ 2017-07-01,102.81346130371094,86.89119720458984,125.59920501708984,71.9550552368164
1413
+ 2017-08-01,138.5316162109375,107.87451171875,160.02310180664062,108.43595123291016
1414
+ 2017-09-01,115.5344467163086,95.0246810913086,142.1448974609375,84.09626770019531
1415
+ 2017-10-01,91.4615707397461,76.09866333007812,109.23060607910156,69.15699768066406
1416
+ 2017-11-01,92.59601593017578,61.75968933105469,103.94397735595703,80.11587524414062
1417
+ 2017-12-01,82.71825408935547,64.84115600585938,95.908447265625,62.65747833251953
1418
+ 2018-01-01,92.42678833007812,69.34327697753906,107.64431762695312,75.66629028320312
1419
+ 2018-02-01,64.49137115478516,58.2115592956543,74.68311309814453,52.002201080322266
1420
+ 2018-03-01,111.96229553222656,76.136474609375,146.9270782470703,64.55758666992188
1421
+ 2018-04-01,123.26347351074219,76.40165710449219,146.39566040039062,94.30585479736328
1422
+ 2018-05-01,125.66661834716797,83.75041961669922,172.21670532226562,63.21790313720703
1423
+ 2018-06-01,103.96858978271484,77.22054290771484,137.0244598388672,56.64043426513672
1424
+ 2018-07-01,110.02842712402344,68.61534881591797,129.1023406982422,84.4084701538086
1425
+ 2018-08-01,112.74168395996094,74.00521850585938,145.11407470703125,68.57559204101562
1426
+ 2018-09-01,75.05390930175781,51.753746032714844,88.62364196777344,51.163917541503906
1427
+ 2018-10-01,92.0164794921875,60.4942512512207,115.21215057373047,61.150474548339844
1428
+ 2018-11-01,80.40758514404297,52.751285552978516,105.16685485839844,47.40216827392578
1429
+ 2018-12-01,90.607666015625,63.819053649902344,106.06269836425781,66.24092864990234
1430
+ 2019-01-01,87.42410278320312,66.39173889160156,112.98045349121094,55.7335090637207
1431
+ 2019-02-01,96.80016326904297,75.31292724609375,127.857421875,57.51169967651367
1432
+ 2019-03-01,82.32829284667969,63.71170425415039,90.78959655761719,66.64120483398438
1433
+ 2019-04-01,79.25344848632812,60.0584602355957,95.45539855957031,57.51552963256836
1434
+ 2019-05-01,106.4719009399414,76.11685943603516,134.97251892089844,64.66343688964844
1435
+ 2019-06-01,106.58845520019531,73.25740051269531,142.6534881591797,53.42063903808594
1436
+ 2019-07-01,93.52125549316406,70.43902587890625,126.93077850341797,47.41885757446289
1437
+ 2019-08-01,103.4044189453125,94.95689392089844,124.72541809082031,70.09744262695312
1438
+ 2019-09-01,90.36798858642578,70.82939147949219,110.8709487915039,67.81023406982422
1439
+ 2019-10-01,97.83673095703125,72.86511993408203,121.31104278564453,69.96658325195312
1440
+ 2019-11-01,73.07838439941406,64.52574920654297,84.5873031616211,53.03253173828125
1441
+ 2019-12-01,74.27989196777344,50.64933395385742,80.11077117919922,63.33135223388672
1442
+ 2020-01-01,138.4209442138672,104.52386474609375,190.8443603515625,81.65093994140625
1443
+ 2020-02-01,75.95555877685547,62.85643768310547,87.1624526977539,56.68605041503906
1444
+ 2020-03-01,81.54003143310547,80.56129455566406,97.09007263183594,62.90298843383789
1445
+ 2020-04-01,69.33940124511719,67.53959655761719,81.76082611083984,47.59123229980469
1446
+ 2020-05-01,68.50721740722656,75.35385131835938,83.35546112060547,42.29555892944336
1447
+ 2020-06-01,71.22785949707031,64.8608627319336,85.86660766601562,49.760887145996094
1448
+ 2020-07-01,66.47328186035156,61.819679260253906,88.73797607421875,36.25208282470703
1449
+ 2020-08-01,65.46604919433594,55.42536544799805,90.00911712646484,28.454627990722656
1450
+ 2020-09-01,80.37738037109375,59.53417205810547,101.25764465332031,49.51808166503906
1451
+ 2020-10-01,76.08316802978516,54.33878707885742,97.65258026123047,42.68144226074219
1452
+ 2020-11-01,70.06746673583984,50.446197509765625,79.03644561767578,62.31394577026367
1453
+ 2020-12-01,64.06729125976562,56.59890365600586,86.81527709960938,31.744428634643555
1454
+ 2021-01-01,77.418701171875,61.636680603027344,98.47562408447266,48.2874870300293
1455
+ 2021-02-01,73.95680236816406,52.29450988769531,94.48355865478516,46.326778411865234
1456
+ 2021-03-01,78.61876678466797,53.88631057739258,100.85202026367188,49.41804122924805
1457
+ 2021-04-01,88.16622161865234,59.975521087646484,109.58695983886719,67.87379455566406
1458
+ 2021-05-01,93.00713348388672,70.34014892578125,120.7828369140625,52.62611389160156
1459
+ 2021-06-01,74.12712097167969,59.44499588012695,92.54654693603516,46.34864044189453
1460
+ 2021-07-01,58.42076873779297,46.87572479248047,64.03631591796875,50.7158317565918
1461
+ 2021-08-01,89.4865493774414,59.06315994262695,103.20159149169922,76.48285675048828
1462
+ 2021-09-01,80.69696807861328,64.56661987304688,92.04731750488281,67.94027709960938
1463
+ 2021-10-01,79.02923583984375,53.48290252685547,93.80802917480469,61.149112701416016
1464
+ 2021-11-01,86.56914520263672,52.67679214477539,121.5009536743164,39.74269104003906
1465
+ 2021-12-01,105.34542083740234,69.3570785522461,155.3102569580078,47.65493392944336
1466
+ 2022-01-01,138.67498779296875,85.09538269042969,199.48751831054688,63.251529693603516
1467
+ 2022-02-01,216.1590118408203,120.52434539794922,320.6058654785156,105.21830749511719
1468
+ 2022-03-01,318.9549255371094,167.3444061279297,403.713623046875,250.9558563232422
1469
+ 2022-04-01,191.14309692382812,127.23625946044922,221.91055297851562,184.41781616210938
1470
+ 2022-05-01,142.25848388671875,99.60482788085938,166.424560546875,140.13734436035156
1471
+ 2022-06-01,130.7073211669922,100.10216522216797,160.72695922851562,114.81468963623047
1472
+ 2022-07-01,117.17676544189453,97.2652587890625,141.24293518066406,97.83872985839844
1473
+ 2022-08-01,132.86322021484375,119.83222198486328,159.38302612304688,111.15857696533203
1474
+ 2022-09-01,131.98587036132812,112.98688507080078,170.31179809570312,108.6280746459961
1475
+ 2022-10-01,143.16241455078125,129.13845825195312,185.2843017578125,112.6750259399414
1476
+ 2022-11-01,116.7162857055664,100.43695831298828,143.0465545654297,98.68260955810547
1477
+ 2022-12-01,111.19593811035156,95.6675796508789,119.1385269165039,109.772216796875
1478
+ 2023-01-01,104.26704406738281,81.17646026611328,113.02135467529297,94.62993621826172
1479
+ 2023-02-01,120.99437713623047,100.30805206298828,147.05015563964844,103.02875518798828
1480
+ 2023-03-01,105.37997436523438,95.41343688964844,125.08584594726562,86.75404357910156
1481
+ 2023-04-01,106.80965423583984,89.50238800048828,118.16682434082031,93.2484130859375
1482
+ 2023-05-01,108.46768188476562,86.6424331665039,122.47150421142578,92.75943756103516
1483
+ 2023-06-01,110.52894592285156,100.80218505859375,129.40652465820312,95.2789077758789
1484
+ 2023-07-01,107.44878387451172,94.53726959228516,123.80915069580078,91.76800537109375
1485
+ 2023-08-01,101.14118194580078,74.21984100341797,117.60943603515625,83.60504913330078
1486
+ 2023-09-01,98.63481140136719,69.45584869384766,125.65179443359375,68.4659194946289
1487
+ 2023-10-01,197.8870086669922,138.62757873535156,205.04005432128906,221.80393981933594
1488
+ 2023-11-01,156.69613647460938,138.68270874023438,143.49435424804688,189.5543975830078
1489
+ 2023-12-01,142.2794647216797,125.21025085449219,136.1783905029297,173.96380615234375
1490
+ 2024-01-01,160.3736572265625,119.98468780517578,140.83609008789062,208.4711456298828
1491
+ 2024-02-01,146.59817504882812,109.94950103759766,140.2446746826172,171.18118286132812
1492
+ 2024-03-01,133.21316528320312,96.97405242919922,121.53968048095703,151.81399536132812
1493
+ 2024-04-01,163.9473419189453,112.007080078125,170.697998046875,165.99069213867188
1494
+ 2024-05-01,130.52186584472656,107.46190643310547,131.44712829589844,133.154296875
1495
+ 2024-06-01,113.0927963256836,86.77111053466797,125.71302795410156,109.73841094970703
1496
+ 2024-07-01,92.3948745727539,71.84403228759766,95.1602783203125,95.11029815673828
1497
+ 2024-08-01,140.97506713867188,105.30271911621094,124.80498504638672,165.17947387695312
1498
+ 2024-09-01,130.35877990722656,95.69933319091797,134.03704833984375,135.5546112060547
1499
+ 2024-10-01,130.689208984375,90.8945541381836,128.40969848632812,142.81838989257812
1500
+ 2024-11-01,128.90164184570312,94.9615707397461,139.14866638183594,127.42887115478516
1501
+ 2024-12-01,142.36643981933594,116.5214614868164,128.26246643066406,164.81373596191406
1502
+ 2025-01-01,112.32621765136719,100.89180755615234,115.36154174804688,109.8415756225586
1503
+ 2025-02-01,136.42637634277344,94.48998260498047,137.76919555664062,140.0130157470703
1504
+ 2025-03-01,172.65379333496094,119.587890625,191.86282348632812,157.95233154296875
1505
+ 2025-04-01,140.9253387451172,111.29067993164062,159.43154907226562,131.79580688476562
1506
+ 2025-05-01,164.2084503173828,128.90989685058594,201.012451171875,146.36984252929688
1507
+ 2025-06-01,221.69993591308594,156.36903381347656,286.8258361816406,181.29537963867188
1508
+ 2025-07-01,134.31622314453125,106.18572235107422,157.33486938476562,118.82093048095703
1509
+ 2025-08-01,136.24305725097656,119.72819519042969,157.7529296875,119.1029281616211
1510
+ 2025-09-01,122.89342498779297,113.94840240478516,138.33181762695312,114.16160583496094
1511
+ 2025-10-01,154.43557739257812,132.67807006835938,168.79913330078125,149.2618865966797
1512
+ 2025-11-01,104.41127014160156,90.52210998535156,118.65498352050781,88.92646789550781
1513
+ 2025-12-01,130.88766479492188,112.34098815917969,144.223388671875,122.13291931152344
1514
+ 2026-01-01,167.668212890625,128.0704345703125,219.08924865722656,99.68529510498047
1515
+ 2026-02-01,116.70408630371094,108.11796569824219,149.5655517578125,84.02339935302734
data/live/worldbank_annual.csv ADDED
@@ -0,0 +1,56 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ date,gdp_us_wb,gdp_china_wb,gdp_japan_wb,gdp_germany_wb,gdp_uk_wb,gdp_india_wb,gdp_brazil_wb,gdp_russia_wb,gdp_saudi_wb,gdp_uae_wb
2
+ 1970-12-31,1073303000000.0,92752930873.1912,217223652719.444,216629229947.096,130671946244.3,62422483054.6667,42327664793.6934,,5377333333.33333,685986701.316701
3
+ 1971-12-31,1164850000000.0,99959013879.6308,245364056622.363,250900942396.699,148113896325.14,67351404351.833,48869830901.7878,,7184806909.28939,939893599.634201
4
+ 1972-12-31,1279110000000.0,113871930713.841,324933841268.585,300899944795.436,169965034965.035,71464700666.9869,58434858374.8696,,9664267086.60323,1415086929.3006
5
+ 1973-12-31,1425376000000.0,138764340892.0,441460582535.921,399833571167.215,192537971582.558,85517673172.5513,83592275862.9982,,14947435499.323,4231243615.86089
6
+ 1974-12-31,1545243000000.0,144418433058.472,490035789970.299,446934971657.471,206131369798.971,99526597933.6331,109794519727.538,,45412957746.4789,11651505689.4244
7
+ 1975-12-31,1684904000000.0,163687619735.857,532861438884.724,492434094920.105,241756637168.142,98473832017.3242,129203555238.827,,46773208642.6814,14720728248.5355
8
+ 1976-12-31,1873412000000.0,154196810058.643,598883902155.605,521658712132.981,232614555256.065,102716451979.68,153168949208.207,,64005665722.3796,19213158778.7928
9
+ 1977-12-31,2081826000000.0,175226595859.778,737069290927.712,602698323085.993,263066457352.172,121486641441.309,176344101401.941,,74188986586.0629,24871775164.6043
10
+ 1978-12-31,2351599000000.0,149788617886.179,1035611588216.59,743182891918.208,335883029721.956,137302319828.995,200278646123.581,,80266516686.5614,23775764224.6832
11
+ 1979-12-31,2627333000000.0,178573913043.478,1077910077676.37,884574218333.155,438994070309.191,152995442497.709,221338204480.222,,111858444786.224,31225659620.9951
12
+ 1980-12-31,2857307000000.0,191487500000.0,1129377244854.04,953772499462.019,564947710899.373,186328579302.068,237393489892.637,,164539660725.118,43599160050.3322
13
+ 1981-12-31,3207041000000.0,196218253968.254,1245221410764.15,803404797057.551,540765675241.158,193491368445.573,258015174748.648,,184291360138.69,49333424135.1131
14
+ 1982-12-31,3343789000000.0,205480916030.534,1158731426905.85,779421633755.138,515048916841.37,200715624830.902,271314113768.417,,153240313858.323,46622718605.2847
15
+ 1983-12-31,3634038000000.0,231130268199.234,1270859919742.9,773507930294.906,489618008185.539,218262146413.158,189656506321.431,,129171635311.143,42803323345.1376
16
+ 1984-12-31,4037613000000.0,260442857142.857,1345824500836.76,727767760978.627,461487097632.349,212157645177.652,188339974086.58,,119624858115.778,41807954235.903
17
+ 1985-12-31,4338979000000.0,310064625850.34,1427019759717.41,735218723093.277,489285164271.047,232511554840.372,210879844638.877,,103897846493.65,40603650231.5445
18
+ 1986-12-31,4579631000000.0,301310144927.536,2120083812109.91,1050092624515.9,601452653180.885,248985994040.59,256480852471.129,,86961922765.3254,33943612094.7971
19
+ 1987-12-31,4855215000000.0,273455156950.673,2580748422781.09,1302932318824.81,745162608269.325,279033584092.223,283056836893.838,,85695861148.1976,36384908744.2114
20
+ 1988-12-31,5236438000000.0,312888888888.889,3125724434400.79,1406367016371.53,910122732123.799,296589670895.932,307881930752.268,554828660436.137,88256074766.3551,36275674203.2144
21
+ 1989-12-31,5641580000000.0,348380566801.619,3109455047823.93,1404092925205.45,926884816753.927,296042052944.66,412990820287.42,506631299734.748,95344459279.0387,41464995913.9199
22
+ 1990-12-31,5963144000000.0,361560229445.507,3185904656663.85,1778162195860.07,1093169389204.55,320979026420.035,390725626002.866,517014446227.929,117630173564.753,50701443748.2975
23
+ 1991-12-31,6158129000000.0,384510452961.672,3648065760648.88,1875792575132.59,1142797178130.51,270105341879.226,342609231342.783,517962962962.963,132223230974.633,51552165622.4462
24
+ 1992-12-31,6520327000000.0,428502354788.069,3980702922117.66,2141377582968.07,1179659529659.53,288208070278.013,328187960871.951,460290556900.726,137087850467.29,54239171887.769
25
+ 1993-12-31,6858559000000.0,446557291212.148,4536940479038.25,2078954217437.6,1061388722255.55,279295648982.529,368295778245.09,435083713850.837,132967957276.368,55625170253.337
26
+ 1994-12-31,7287236000000.0,566929539493.172,4998797547740.97,2215282632276.73,1140489745944.29,327274843459.429,525369851353.742,395077301248.464,135174899866.489,59305093979.842
27
+ 1995-12-31,7639749000000.0,738190896227.55,5545563663889.7,2593053091306.13,1349094208616.06,360281909643.489,769333330411.575,395537185734.854,143343124165.554,65743666575.8649
28
+ 1996-12-31,8073122000000.0,868523936530.083,4923391533851.63,2506576553158.31,1425287051482.06,392896866204.516,850426433004.077,391724890744.498,158662483311.081,73571233996.1863
29
+ 1997-12-31,8577554457000.0,967753570434.667,4492448605638.94,2218790886532.82,1569317288801.57,415867563592.829,883206452795.124,404928954191.876,165963684913.218,78839008444.5655
30
+ 1998-12-31,9062818202000.0,1037134141760.35,4098362709531.24,2247760364565.97,1660821464060.95,421351317224.941,863711007325.493,270955486862.442,146775466666.667,75674336283.1858
31
+ 1999-12-31,9631174489000.0,1103843203575.64,4635982224063.88,2213873468586.88,1693458987218.9,458821052615.79,599642075004.471,195907128350.934,161717066666.667,84445473110.9598
32
+ 2000-12-31,10250947997000.0,1223754919971.05,4968359075956.59,1966980701145.1,1671597821152.97,468395521654.458,655448188259.351,259710142196.943,189514933333.333,104337372362.151
33
+ 2001-12-31,10581929774000.0,1355036590251.52,4374711694090.87,1966381496641.73,1656171009068.66,485440139204.171,559983704094.17,306602070620.5,184137600000.0,103311640571.818
34
+ 2002-12-31,10929112955000.0,1489821682050.54,4182846045873.61,2102350798305.89,1790536570743.41,514939140318.756,509795270685.19,345470494417.863,189605866666.667,109816201497.617
35
+ 2003-12-31,11456442041000.0,1683903309843.85,4519561645253.53,2534715518349.01,2061227755102.04,607700687237.318,558233724164.711,430347420184.885,215807733333.333,124346358066.712
36
+ 2004-12-31,12217193198000.0,1984196551300.44,4893116005656.56,2852317768061.78,2429774807762.72,709152728830.775,669289321944.512,591016690732.385,258742133333.333,147824370319.946
37
+ 2005-12-31,13039199193000.0,2317551298052.05,4831467035389.8,2893393187361.87,2551361818181.82,820383763511.445,891633826625.407,764015973481.11,328459608764.111,180617467964.602
38
+ 2006-12-31,13815586948000.0,2791498472804.33,4601663122649.92,3046308753670.58,2719558417663.29,940259888787.721,1107626711163.23,989932071352.543,376900133511.348,222116541865.214
39
+ 2007-12-31,14474226905000.0,3604055822571.63,4579750920354.81,3484056680854.91,3104699879951.98,1216736438834.96,1397114247188.89,1299703478481.65,415964509673.115,257916133424.098
40
+ 2008-12-31,14769857911000.0,4667346414521.95,5106679115127.3,3808197720125.0,2945251838235.29,1198895139005.92,1695855391757.96,1660848058303.11,519796800000.0,315474615738.598
41
+ 2009-12-31,14478064934000.0,5189577094997.58,5289493117993.89,3478545516683.59,2429358155475.93,1341888016994.9,1666996294252.12,1222645900055.7,429097866666.667,253547358747.447
42
+ 2010-12-31,15048964444000.0,6192564874453.29,5759071769013.11,3467093769666.67,2496740681057.14,1675615519484.96,2208838108484.35,1524916715223.95,528207466666.667,307736419332.88
43
+ 2011-12-31,15599728123000.0,7671757207851.29,6233147172341.35,3823575803793.78,2675590034128.66,1823051829894.55,2616156606579.21,2045922753398.04,680660800000.0,368881143635.126
44
+ 2012-12-31,16253972230000.0,8673664713189.24,6272362996105.03,3596483233406.25,2719715961539.83,1827637590410.41,2465228293706.86,2208293553878.42,751921333333.333,392793464942.138
45
+ 2013-12-31,16843190993000.0,9743124247267.24,5212328181166.18,3807023797050.99,2796908333283.39,1856721507621.58,2472819362043.74,2292470078346.22,769755733333.333,409632675289.313
46
+ 2014-12-31,17550680174000.0,10674533168257.4,4896994405353.29,3964870735760.77,3085362169410.29,2039126479154.52,2456043766032.38,2059241589895.01,787153066666.667,424935874744.724
47
+ 2015-12-31,18206020741000.0,11280814787468.9,4444930651964.18,3425099578746.09,2945579890258.46,2103588360044.94,1802211999456.42,1363482182197.71,693414400000.0,381973042886.317
48
+ 2016-12-31,18695110842000.0,11456024084962.0,5003677627544.24,3536787895179.0,2706807606538.73,2294796885663.16,1795693265999.04,1276786350881.14,689279466666.667,381717086453.37
49
+ 2017-12-31,19477336549000.0,12537559062282.9,4930837369151.42,3765351626105.89,2699118387873.1,2651474262755.45,2063514688805.78,1574199360089.0,741266133333.333,403365010211.028
50
+ 2018-12-31,20533057312000.0,14147765772963.8,5040880939324.86,4055433215301.96,2897028009916.05,2702929641648.74,1916933708352.71,1657328773461.31,886564800000.0,440560108917.631
51
+ 2019-12-31,21380976119000.0,14560167101283.4,5117993853016.51,3959894794039.21,2875710080015.3,2835606256558.19,1873288158838.63,1693115002708.32,888890133333.333,433926208304.969
52
+ 2020-12-31,21060473613000.0,14996414166715.1,5054068005376.28,3941398957073.94,2724001478304.59,2674851578587.27,1476107292151.95,1493075894362.14,767951200000.0,357161878829.135
53
+ 2021-12-31,23315080560000.0,18201698719564.0,5039148168861.22,4355251953410.78,3194559188925.93,3167270623260.47,1670647464062.96,1829186719575.1,982661066666.667,422441388699.796
54
+ 2022-12-31,25604848907611.0,18316765021690.2,4262463317796.53,4201021706478.62,3181244350465.41,3346107287730.93,1951923832083.87,2291612121334.64,1239075200000.0,511403403675.97
55
+ 2023-12-31,27292170793214.4,18270356654533.2,4213167237905.83,4562207532490.28,3420796653789.08,3638489096033.86,2191131869706.02,2071505725030.58,1218584533333.33,522622191967.325
56
+ 2024-12-31,28750956130731.2,18743803170827.2,4027597523550.58,4685592577804.69,3686033044482.13,3909891533858.08,2185821648943.86,2173835806671.66,1239804533333.33,552324846834.581
data/live/yfinance.csv ADDED
The diff for this file is too large to render. See raw diff
 
data/live/yfinance_monthly.csv ADDED
The diff for this file is too large to render. See raw diff
 
data/llm_event_scores.json ADDED
@@ -0,0 +1,34 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "1990-08": 0.5,
3
+ "1991-01": 1,
4
+ "1997-07": -1,
5
+ "1998-12": 1,
6
+ "2001-09": -1,
7
+ "2003-03": -1,
8
+ "2005-08": -1,
9
+ "2008-07": 1,
10
+ "2008-09": -1,
11
+ "2009-03": 0.8,
12
+ "2010-04": -1,
13
+ "2011-02": 1,
14
+ "2014-06": -0.8,
15
+ "2014-11": -0.8,
16
+ "2015-01": -0.8,
17
+ "2016-02": -1,
18
+ "2016-11": 1,
19
+ "2018-05": 0.5,
20
+ "2018-10": -0.5,
21
+ "2019-09": 1,
22
+ "2020-03": -0.7,
23
+ "2020-04": -1,
24
+ "2020-05": 1,
25
+ "2021-07": 0.5,
26
+ "2022-02": 1,
27
+ "2022-06": 0.8,
28
+ "2022-10": 1,
29
+ "2023-04": 1,
30
+ "2023-10": 0.8,
31
+ "2024-06": 0.3,
32
+ "2024-11": -0.5,
33
+ "2025-03": 0.8
34
+ }
data/raw_public/fred_core_daily.csv ADDED
@@ -0,0 +1 @@
 
 
1
+ ""
frontend/.env.production ADDED
@@ -0,0 +1 @@
 
 
1
+ VITE_API_URL=
frontend/.gitignore ADDED
@@ -0,0 +1,24 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # Logs
2
+ logs
3
+ *.log
4
+ npm-debug.log*
5
+ yarn-debug.log*
6
+ yarn-error.log*
7
+ pnpm-debug.log*
8
+ lerna-debug.log*
9
+
10
+ node_modules
11
+ dist
12
+ dist-ssr
13
+ *.local
14
+
15
+ # Editor directories and files
16
+ .vscode/*
17
+ !.vscode/extensions.json
18
+ .idea
19
+ .DS_Store
20
+ *.suo
21
+ *.ntvs*
22
+ *.njsproj
23
+ *.sln
24
+ *.sw?
frontend/README.md ADDED
@@ -0,0 +1,16 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # React + Vite
2
+
3
+ This template provides a minimal setup to get React working in Vite with HMR and some ESLint rules.
4
+
5
+ Currently, two official plugins are available:
6
+
7
+ - [@vitejs/plugin-react](https://github.com/vitejs/vite-plugin-react/blob/main/packages/plugin-react) uses [Oxc](https://oxc.rs)
8
+ - [@vitejs/plugin-react-swc](https://github.com/vitejs/vite-plugin-react/blob/main/packages/plugin-react-swc) uses [SWC](https://swc.rs/)
9
+
10
+ ## React Compiler
11
+
12
+ The React Compiler is not enabled on this template because of its impact on dev & build performances. To add it, see [this documentation](https://react.dev/learn/react-compiler/installation).
13
+
14
+ ## Expanding the ESLint configuration
15
+
16
+ If you are developing a production application, we recommend using TypeScript with type-aware lint rules enabled. Check out the [TS template](https://github.com/vitejs/vite/tree/main/packages/create-vite/template-react-ts) for information on how to integrate TypeScript and [`typescript-eslint`](https://typescript-eslint.io) in your project.
frontend/eslint.config.js ADDED
@@ -0,0 +1,29 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import js from '@eslint/js'
2
+ import globals from 'globals'
3
+ import reactHooks from 'eslint-plugin-react-hooks'
4
+ import reactRefresh from 'eslint-plugin-react-refresh'
5
+ import { defineConfig, globalIgnores } from 'eslint/config'
6
+
7
+ export default defineConfig([
8
+ globalIgnores(['dist']),
9
+ {
10
+ files: ['**/*.{js,jsx}'],
11
+ extends: [
12
+ js.configs.recommended,
13
+ reactHooks.configs.flat.recommended,
14
+ reactRefresh.configs.vite,
15
+ ],
16
+ languageOptions: {
17
+ ecmaVersion: 2020,
18
+ globals: globals.browser,
19
+ parserOptions: {
20
+ ecmaVersion: 'latest',
21
+ ecmaFeatures: { jsx: true },
22
+ sourceType: 'module',
23
+ },
24
+ },
25
+ rules: {
26
+ 'no-unused-vars': ['error', { varsIgnorePattern: '^[A-Z_]' }],
27
+ },
28
+ },
29
+ ])
frontend/index.html ADDED
@@ -0,0 +1,13 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <!doctype html>
2
+ <html lang="en">
3
+ <head>
4
+ <meta charset="UTF-8" />
5
+ <link rel="icon" type="image/svg+xml" href="/favicon.svg" />
6
+ <meta name="viewport" content="width=device-width, initial-scale=1.0" />
7
+ <title>油刃有余 OilVerse — 油价因子量化分析预测平台</title>
8
+ </head>
9
+ <body>
10
+ <div id="root"></div>
11
+ <script type="module" src="/src/main.jsx"></script>
12
+ </body>
13
+ </html>
frontend/package-lock.json ADDED
The diff for this file is too large to render. See raw diff
 
frontend/package.json ADDED
@@ -0,0 +1,29 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "name": "frontend",
3
+ "private": true,
4
+ "version": "0.0.0",
5
+ "type": "module",
6
+ "scripts": {
7
+ "dev": "vite",
8
+ "build": "vite build",
9
+ "lint": "eslint .",
10
+ "preview": "vite preview"
11
+ },
12
+ "dependencies": {
13
+ "react": "^19.2.4",
14
+ "react-dom": "^19.2.4",
15
+ "react-router-dom": "^7.13.2",
16
+ "recharts": "^3.8.0"
17
+ },
18
+ "devDependencies": {
19
+ "@eslint/js": "^9.39.4",
20
+ "@types/react": "^19.2.14",
21
+ "@types/react-dom": "^19.2.3",
22
+ "@vitejs/plugin-react": "^6.0.1",
23
+ "eslint": "^9.39.4",
24
+ "eslint-plugin-react-hooks": "^7.0.1",
25
+ "eslint-plugin-react-refresh": "^0.5.2",
26
+ "globals": "^17.4.0",
27
+ "vite": "^8.0.1"
28
+ }
29
+ }
frontend/public/favicon.svg ADDED
frontend/public/icons.svg ADDED
frontend/src/App.css ADDED
@@ -0,0 +1,44 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ .app-layout {
2
+ display: flex;
3
+ min-height: 100vh;
4
+ }
5
+
6
+ .main-content {
7
+ margin-left: 250px;
8
+ flex: 1;
9
+ padding: 24px 32px;
10
+ }
11
+
12
+ .loading-overlay {
13
+ display: flex;
14
+ align-items: center;
15
+ justify-content: center;
16
+ height: 60vh;
17
+ }
18
+ .loader {
19
+ text-align: center;
20
+ }
21
+ .loader p {
22
+ color: var(--muted);
23
+ font-size: 14px;
24
+ margin-top: 16px;
25
+ }
26
+ .loader-spinner {
27
+ width: 40px;
28
+ height: 40px;
29
+ border: 3px solid var(--border);
30
+ border-top-color: var(--accent);
31
+ border-radius: 50%;
32
+ animation: spin 0.8s linear infinite;
33
+ margin: 0 auto;
34
+ }
35
+ @keyframes spin {
36
+ to { transform: rotate(360deg); }
37
+ }
38
+
39
+ @media (max-width: 1024px) {
40
+ .main-content {
41
+ margin-left: 0;
42
+ padding: 12px;
43
+ }
44
+ }
frontend/src/App.jsx ADDED
@@ -0,0 +1,56 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import { BrowserRouter, Routes, Route, Navigate } from 'react-router-dom';
2
+ import { AppProvider, useApp } from './context/AppContext';
3
+ import Sidebar from './components/Sidebar';
4
+ import P1Overview from './pages/P1Overview';
5
+ import P2FactorAnalysis from './pages/P2FactorAnalysis';
6
+ import P3RiskPrediction from './pages/P3RiskPrediction';
7
+ import P4StressTest from './pages/P4StressTest';
8
+ import P5IndustryImpact from './pages/P5IndustryImpact';
9
+ import P6ModelValidation from './pages/P6ModelValidation';
10
+ import P7DataGovernance from './pages/P7DataGovernance';
11
+ import P9AIAgent from './pages/P9AIAgent';
12
+ import P9Pipeline from './pages/P9Pipeline';
13
+ import './App.css';
14
+
15
+ function Layout() {
16
+ const { loading } = useApp();
17
+
18
+ return (
19
+ <div className="app-layout">
20
+ <Sidebar />
21
+ <main className="main-content">
22
+ {loading ? (
23
+ <div className="loading-overlay">
24
+ <div className="loader">
25
+ <div className="loader-spinner" />
26
+ <p>加载数据中...</p>
27
+ </div>
28
+ </div>
29
+ ) : (
30
+ <Routes>
31
+ <Route path="/" element={<P1Overview />} />
32
+ <Route path="/factors" element={<P2FactorAnalysis />} />
33
+ <Route path="/prediction" element={<P3RiskPrediction />} />
34
+ <Route path="/stress" element={<P4StressTest />} />
35
+ <Route path="/industry" element={<P5IndustryImpact />} />
36
+ <Route path="/validation" element={<P6ModelValidation />} />
37
+ <Route path="/governance" element={<P7DataGovernance />} />
38
+ <Route path="/hedging" element={<Navigate to="/industry" replace />} />
39
+ <Route path="/agent" element={<P9AIAgent />} />
40
+ <Route path="/pipeline" element={<P9Pipeline />} />
41
+ </Routes>
42
+ )}
43
+ </main>
44
+ </div>
45
+ );
46
+ }
47
+
48
+ export default function App() {
49
+ return (
50
+ <BrowserRouter>
51
+ <AppProvider>
52
+ <Layout />
53
+ </AppProvider>
54
+ </BrowserRouter>
55
+ );
56
+ }
frontend/src/api.js ADDED
@@ -0,0 +1,80 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ const API_BASE = import.meta.env.VITE_API_URL || 'http://localhost:8765';
2
+
3
+ export async function fetchBenchmarks() {
4
+ const res = await fetch(`${API_BASE}/api/benchmarks`);
5
+ return res.json();
6
+ }
7
+
8
+ export async function fetchResults(benchmark) {
9
+ const res = await fetch(`${API_BASE}/api/results/${benchmark}`);
10
+ return res.json();
11
+ }
12
+
13
+ export async function fetchEval(benchmark) {
14
+ const res = await fetch(`${API_BASE}/api/eval/${benchmark}`);
15
+ return res.json();
16
+ }
17
+
18
+ export async function fetchNlg(benchmark) {
19
+ const res = await fetch(`${API_BASE}/api/nlg/${benchmark}`);
20
+ return res.json();
21
+ }
22
+
23
+ export async function fetchScenarios() {
24
+ const res = await fetch(`${API_BASE}/api/scenarios`);
25
+ return res.json();
26
+ }
27
+
28
+ export async function fetchRegime() {
29
+ const res = await fetch(`${API_BASE}/api/regime`);
30
+ return res.json();
31
+ }
32
+
33
+ export async function fetchHedging() {
34
+ const res = await fetch(`${API_BASE}/api/hedging`);
35
+ return res.json();
36
+ }
37
+
38
+ export async function fetchBacktest() {
39
+ const res = await fetch(`${API_BASE}/api/backtest`);
40
+ return res.json();
41
+ }
42
+
43
+ export async function fetchAblation() {
44
+ const res = await fetch(`${API_BASE}/api/ablation`);
45
+ return res.json();
46
+ }
47
+
48
+ export async function fetchQuality() {
49
+ const res = await fetch(`${API_BASE}/api/quality`);
50
+ return res.json();
51
+ }
52
+
53
+ export async function fetchLineage() {
54
+ const res = await fetch(`${API_BASE}/api/lineage`);
55
+ return res.json();
56
+ }
57
+
58
+ export async function fetchFeatSel() {
59
+ const res = await fetch(`${API_BASE}/api/feat_sel`);
60
+ return res.json();
61
+ }
62
+
63
+ export async function fetchCausal() {
64
+ const res = await fetch(`${API_BASE}/api/causal`);
65
+ return res.json();
66
+ }
67
+
68
+ export async function fetchEvents() {
69
+ const res = await fetch(`${API_BASE}/api/events`);
70
+ return res.json();
71
+ }
72
+
73
+ export async function sendChat(message, sessionId) {
74
+ const res = await fetch(`${API_BASE}/api/chat`, {
75
+ method: 'POST',
76
+ headers: { 'Content-Type': 'application/json' },
77
+ body: JSON.stringify({ message, session_id: sessionId }),
78
+ });
79
+ return res.json();
80
+ }
frontend/src/assets/hero.png ADDED