交互式 ETF/指数 历史数据分析与预测工具:多数据源兜底、可视化、CSV 导出、基础/高级预测。
- 数据获取:多
akshareAPI 自动兜底,智能处理sz/sh前缀 - 统计展示:基础统计与最新数据预览
- 可视化:价格趋势图(保存到
etf_png/) - 导出:历史数据 CSV(保存到
etf_csv/) - 预测:
- 基础:线性回归 + ±10% 涨跌停限制
- 高级:技术特征工程 + TimeSeriesSplit + GridSearchCV(RF/GBDT/ElasticNet)
- 代码:
etf_analyzer.py - 输出:
- 图:
etf_png/etf_<代码>_trend_<开始>_<结束>.png - 表:
etf_csv/etf_<代码>_data_<开始>_<结束>.csv
- 图:
.gitignore已忽略虚拟环境与输出文件
- Python 3.9+
- 依赖:
pandas、numpy、matplotlib、scikit-learn、akshare
推荐(仓库内已有 venv 示例):
/Users/liuqingyi/test/py39_env/bin/pip install -U numpy pandas matplotlib scikit-learn akshare或自建虚拟环境:
python -m venv .venv
source .venv/bin/activate
pip install -U numpy pandas matplotlib scikit-learn aksharepython etf_analyzer.py交互步骤:输入 ETF 代码/名称与开始/结束日期 → 可选绘图/导出/预测。
预测选项:1 基础预测;2 高级预测。
- 特征:收益/对数收益、均线/乖离、波动率、RSI、MACD、成交量特征(含滞后)
- 选择:TimeSeriesSplit + GridSearchCV 在 RF/GBDT/ElasticNet 中择优
- 评估:输出 CV MAE 与留出 MAE;预测下一交易日收盘价与涨幅(±10% 限制)
建议样本≥1年,且优选流动性较好的 ETF。
- 依赖缺失:请激活 venv 并安装依赖
- 数据为空:
- 避免未来日期,尝试更早开始日期(如
20230101) - 尝试添加/去掉
sz/sh前缀
- 避免未来日期,尝试更早开始日期(如
- 许可证:MIT
- 作者:Liu Qingyi
- 版本:1.1.0(见
etf_analyzer.py顶部)
欢迎 Issue/PR。可讨论新增特征、XGBoost/LightGBM、或改为方向分类任务等。