Spaces:
Build error
Build error
孙家明 commited on
Commit ·
fab9847
0
Parent(s):
deploy: OilVerse for HuggingFace (Node.js 18 fix)
Browse filesThis view is limited to 50 files because it contains too many changes. See raw diff
- .github/workflows/update_data.yml +45 -0
- .gitignore +14 -0
- Dockerfile +33 -0
- README.md +260 -0
- agent/__init__.py +5 -0
- agent/chat.py +425 -0
- api_server.py +630 -0
- config.py +95 -0
- core/__init__.py +8 -0
- core/analysis.py +395 -0
- core/engine.py +632 -0
- core/feature_selection.py +164 -0
- core/hedging.py +326 -0
- core/tft_model.py +211 -0
- data/api_keys.json +6 -0
- data/cloud/census_oil_trade.csv +1071 -0
- data/cloud/cftc_positioning.csv +0 -0
- data/cloud/worldbank_commodities.csv +0 -0
- data/cloud/worldbank_debug.csv +1 -0
- data/consumer_confidence_cache.csv +604 -0
- data/intermediate/public_core_monthly_hub.csv +1 -0
- data/intermediate/public_core_monthly_hub_raw.csv +1 -0
- data/knowledge_base/README.md +10 -0
- data/knowledge_base/oil_market_event_candidates.csv +26 -0
- data/knowledge_base/oil_market_event_registry.csv +26 -0
- data/knowledge_base/opec_momr_manual_revisions.csv +1 -0
- data/live/china_monthly.csv +668 -0
- data/live/derived.csv +309 -0
- data/live/derived_features.csv +309 -0
- data/live/eia_monthly.csv +0 -0
- data/live/fred_monthly.csv +0 -0
- data/live/gdelt_monthly.csv +1515 -0
- data/live/worldbank_annual.csv +56 -0
- data/live/yfinance.csv +0 -0
- data/live/yfinance_monthly.csv +0 -0
- data/llm_event_scores.json +34 -0
- data/raw_public/fred_core_daily.csv +1 -0
- frontend/.env.production +1 -0
- frontend/.gitignore +24 -0
- frontend/README.md +16 -0
- frontend/eslint.config.js +29 -0
- frontend/index.html +13 -0
- frontend/package-lock.json +0 -0
- frontend/package.json +29 -0
- frontend/public/favicon.svg +1 -0
- frontend/public/icons.svg +24 -0
- frontend/src/App.css +44 -0
- frontend/src/App.jsx +56 -0
- frontend/src/api.js +80 -0
- 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 |
+
[](https://python.org)
|
| 17 |
+
[](https://react.dev)
|
| 18 |
+
[](https://fastapi.tiangolo.com)
|
| 19 |
+
[](https://arxiv.org/abs/1912.09363)
|
| 20 |
+
[]()
|
| 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('&', '&').replace('<', '<').replace('>', '>').replace(''', "'").replace('"', '"')
|
| 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
|