import { useState, useEffect } from 'react'; import { useApp } from '../context/AppContext'; import StatCard from '../components/StatCard'; import { fetchAblation } from '../api'; import './Pages.css'; export default function P6ModelValidation() { const { evalData: ev } = useApp(); const [ablation, setAblation] = useState([]); useEffect(() => { fetchAblation().then(setAblation).catch(() => {}); }, []); return (

🔬 模型验证与方法论

回测 · 消融实验 · 创新叙事

第一幕:传统方向预测的失败

月频涨跌方向预测(XGBoost + 605特征 × 60月窗口):
• DA=47.9% < Always-Up 57.1%
• AUC=0.41, MCC=-0.17(负相关)
• 概率排序完全反向:最低桶(Q1)实际上涨率 64.7%

第二幕:根因诊断

p >> n:605特征 × 60样本 = 10:1 过拟合
• 校准层做 1-prob hack
• 基准0/1信号占ensemble 44.5%
• 方向函数有实现 bug

第三幕:范式转换 → 风险因子框架

"猜涨跌"对企业银行无意义。我们转向:
区间预测:80%覆盖 1M/3M
因子归因:什么在驱动油价
Regime识别:当前处于哪种宏观格局
行业映射:风险如何传导
结果:覆盖{ev.cov_1m}%, Vol corr=+{ev.vol_corr}

📡 另类数据创新: 多源情绪因子融合

AKShare真实API · SiliconFlow LLM情绪评分 · VIX衍生恐惧指数

三源数据管道

📊 AKShare API ← 密歇根消费者信心
  ↓ 603个月真实数据
🤖 SiliconFlow LLM ← Qwen2.5-7B
  ↓ 32个油价历史事件评分
📈 VIX + 动量 ← 市场恐惧指数
  ↓
🔄 融入 Walk-Forward Pipeline

新增因子

📊 consumer_confidence: 消费者信心z-score r = -0.01
😨 market_fear_index: VIX衍生恐惧指数 r = +0.18
🤖 event_sentiment: LLM事件情绪 r = +0.01

创新价值

真实API数据: AKShare可验证的消费者信心
AI情绪评分: LLM对油价事件量化打分
全覆盖: 1990-2026 无缺失

🧠 前沿技术: Temporal Fusion Transformer (TFT)

Google Research 2021 · 学术引用 3000+ · 时序预测 SOTA

模型架构

📥 Input (24月回看窗口)
  ↓
🔀 Variable Selection Network
  ↓ ← 自动学习因子重要性
🔄 LSTM Encoder-Decoder
  ↓
👁️ Multi-Head Temporal Attention
  ↓ ← 识别关键时间步
📊 Quantile Output [Q10, Q50, Q90]

核心创新点

Variable Selection: 端到端学习因子权重, 超越人工特征工程
Temporal Attention: 自动发现历史关键时段
多分位数: 原生支持 Q10/Q50/Q90, 与 QR/CQR 框架天然融合
轻量化部署: 17K 参数, 1.3s/步, CPU 可运行

集成策略

QR 50% LGB 25% TFT 25%

方法论对比矩阵

方法类型角色1M CoverageWIS优势
TFT (Transformer)🧠 Deep Learning集成成员Attention + Variable Selection
Quantile Regression统计学习主模型{ev.cov_1m}%{ev.wis_1m}可解释、稳定
Conformal QR校准框架覆盖保证{ev.cqr_cov}%{ev.cqr_wis}分布自由覆盖保证
LightGBM Quantile集成学习非线性{ev.lgb_cov}%{ev.lgb_wis}树模型非线性捕捉
Historical Quantile基线对照~75%{ev.naive_wis}无模型

消融实验(真实数据)

{ablation.map((a, i) => ( ))}
实验参数CoverageWIS测试月数
{a.type === 'factor_group' ? (a.param === 'ALL' ? '★ 全部因子' : '✖ ' + a.param_label) : a.type === 'window' ? '训练窗口' : ''} {a.param_label || a.param} {(a.cov * 100).toFixed(1)}% {a.wis} {a.n}
); }