MiQ MCP:蒙德里安保形预测的分钟尺度分位数预测器
一个笔记本电脑友好的日志级实验,用于在有限样本覆盖保证下对NIFTY-50分钟水平的回报进行概率预测。
概述
该实施提供了:
- 点和分位数预测:具有滞后回报、EWMA波动性、交易量特征和傅里叶季节性项的岭回归和线性分位数回归
- 保形预测:有限样本有效预测区间的分割共形校准(CQR风格)
- 蒙德里安保形:集团有条件(一天中的时间分层)覆盖,以实现稳定的日内表现
- 严格评估:覆盖率分析、区间宽度、CRPS、迪堡-马里亚诺测试
特性
数据处理
- 自动过滤NSE交易时间(印度标准时间09:15-15:30)
- 延迟返回功能(1、5、15、60分钟)
- EWMA波动率估计(λ=0.97)
- 体积z评分标准化
- 日内季节性的傅里叶项(捕捉U形模式)
模型
- 岭回归:具有L2正则化的快速点预测器
- 分位数回归:τ∈{0.05,0.5,0.95}的基于SGD的具有弹球损失的线性模型
- 分体式共形:有限样本有效预测区间
- 蒙德里安保形:日间有条件保险
评估
- 点精度:MAE、MSE
- 概率:覆盖率(90%、95%)、区间宽度、CRPS
- 按时间段划分的覆盖范围(显示蒙德里安福利)
- 迪堡马里亚诺测试与天真基线
- 通过禁运清除时间序列分割,以防止泄漏
安装
pip install -r requirements.txt用法
快速开始
只需运行主脚本:
python main.py这将:
- 从加载所有库存
Stocks/目录 - 在多个时间段(1、5、15、60分钟)处理每只股票
- 训练模型,校准共形预测器
- 生成综合评估指标
- 将结果和图表保存到
results/目录
输出
实验产生:
CSV文件(in results/)
full_results.csv:所有股票和视野的完整结果summary_by_horizon.csv:按预测期汇总的指标summary_by_stock.csv:按库存汇总的指标
绘图(in results/plots/)
coverage_by_horizon.png:标准和蒙德里安方法的经验覆盖率与名义覆盖率coverage_by_timeofday.png:日内区间覆盖率(显示蒙德里安优势)mae_comparison.png:点预测精度与初始基线interval_width.png:按层位预测区间宽度
项目结构
DRS_MiQP/
├── main.py # Main execution script
├── src/
│ ├── __init__.py
│ ├── data_loader.py # Data loading and feature engineering
│ ├── models.py # Point and quantile forecasters
│ ├── conformal.py # Split and Mondrian conformal prediction
│ ├── evaluation.py # Metrics, tests, and visualization
│ └── utils.py # Helper functions
├── Stocks/ # Input data (NIFTY-50 minute bars)
├── results/ # Output directory (created automatically)
├── requirements.txt # Dependencies
└── README.md # This file配置
关键参数可以在中修改 main.py 配置字典:
config = {
'horizons': [1, 5, 15, 60], # Forecast horizons (minutes)
'train_ratio': 0.70, # Training set proportion
'calib_ratio': 0.15, # Calibration set proportion
'test_ratio': 0.15, # Test set proportion
'alpha_levels': [0.10, 0.05], # Significance levels (90%, 95% coverage)
'time_buckets': 10, # Number of Mondrian groups
'fourier_terms': 3, # Number of Fourier harmonics
'embargo_minutes': 60, # Gap between train/calib/test
'random_state': 42 # Reproducibility
}预期运行时间
在典型的笔记本电脑(4-8核)上:
- 每只股票,每段时间:~2-5分钟
- 完整实验(50只股票×4个层位):~6-10小时
为了更快地进行测试,您可以:
- 减少库存数量
- 使用更少的视野
- 减少纪元
QuantileForecaster
预期的关键结果
- 有效保险范围:测试集上的经验覆盖率接近标称值(90%/95%)
- 蒙德里安福利:与标准适形相比,在一天中的不同时间段内覆盖更稳定
- 竞争准确性:在MAE上,Ridge的表现优于天真基线(随机游走)
- 紧凑的间隔:分位数+共形产生比标准方法更窄的间隔,同时保持覆盖范围
科学贡献
- 有限样品保证 基于保角预测的高频股票数据
- 团体有条件保险 通过蒙德里安/分层共形法计算时间效应
- 高效的季节性建模 在线性模型中使用傅里叶特征
- 正确评估 清除简历、禁运和迪堡马里亚诺测试
参考文献
- 共形分位数回归:罗曼诺、帕特森、坎德斯(2019)
- 蒙德里安一致性预测:Vovk等人(2005年)
- 季节性的傅里叶特征:海德曼和阿萨纳索普洛斯(2021)
- 清除交叉验证:洛佩斯·德·普拉多(2018)
- 迪堡马里亚诺测试:迪堡和马里亚诺(1995)
引用
如果您在学术工作中使用此代码,请引用:
MiQ-MCP: Minute-scale Quantile Forecasting with Mondrian Conformal Prediction
for Indian Equity Markets (2025)许可证
麻省理工学院许可证-您可以自由使用和适应您的研究。
联系
如有疑问或问题,请打开GitHub问题或联系作者。
