# silverRegime **Repository Path**: silver6wings/silverRegime ## Basic Information - **Project Name**: silverRegime - **Description**: No description available - **Primary Language**: Python - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-04-19 - **Last Updated**: 2026-06-29 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # Silver Regime Silver Regime 是面向硕士论文实证部分的 A 股市场风格识别与 ETF 仓位风控项目。 **当前主路径:** ``` Step 1 数据准备 → Step 2 相关性验证 → Step 5 月度 walk-forward 聚类 → Step 6 RL 数据集 + 中证500 Q-learning → Step 7/8 多 ETF 回测 ``` 论文核心问题: > A 股市场存在明显的风格切换和行业轮动,能否通过指数/ETF 日线结构识别市场 Regime,并为后续仓位风控模型提供状态变量? ## 设计要点 | 项目 | 说明 | | --- | --- | | 聚类特征 | `same_day_daily_kline_tail_proxy`(尾盘 K 线代理特征,10 维/标的) | | 决策时点 | 尾盘约 10 分钟,假设当日 K 线结构已接近全日形态 | | 聚类方法 | `StandardScaler + PCA(20) + KMeans`,月度 walk-forward 滚动 | | 主方案 | `all_assets`(99 标的)+ `k=4` | | Regime 标签 | `_data/5_clustering_monthly/walk_forward_predicted_labels.csv` | | RL 样本期 | 2025-01-01 ~ 2026-06-01(339 个交易日,与 walk-forward 预测期一致) | | RL 划分 | 训练 2025 全年 / 验证 2026Q1 / 测试 2026-04~06 | 目录编号保留 Step 1/2/5/6/7/8,中间 Step 3/4 为已移除的历史实验分支(开盘静态聚类、季度 walk-forward 等),不再属于主链路。 ## Environment 建议使用 Python 3.10+。 ```bash pip install -r requiremens.txt ``` 当前核心脚本主要依赖: - `pandas==2.3.3` - `numpy==2.2.6` - `scikit-learn==1.7.2` - `scipy==1.15.3` 数据下载脚本可能还会用到 `akshare`、`mootdx`。当前聚类和相关性流程不依赖它们。 ## Data 主要数据目录: | 路径 | 说明 | | --- | --- | | `_data/index_cleaned.csv` | 清洗后的 99 个完整标的清单 | | `_data/0_index/*.csv` | 各指数/ETF 日线行情 | | `_data/2_correlation/` | 相关性验证结果 | | `_data/5_clustering_monthly/` | 月度 walk-forward 聚类(主方案) | | `_data/6_rl_prediction/` | RL 决策数据集与中证500 实验 | | `_data/7_rl_hs300/` | 沪深300 单标的实验 | | `_data/8_rl_multi_etf/` | 多 ETF 泛化实验 | 样本区间: - 数据池:2022-12-23 ~ 2026-06-01(829 个交易日) - 聚类训练:各滚动窗口约两年历史 - 聚类预测 / RL 主实验:2025-01-01 ~ 2026-06-01(339 天) ## Quick Reproduce 按顺序运行以下命令可复现论文主实验: ```bash # Step 1: 数据清洗与验证 python3 step_1_data_prepare/_1.3_data_cleaning.py python3 step_1_data_prepare/_1.4_data_validation.py # Step 2: 相关性检验 python3 step_2_correlation/correlation_analysis.py # Step 5: 月度 walk-forward 聚类(主方案) python3 step_5_clustering_monthly/walk_forward_kmeans.py # Step 6: RL 决策数据集 + 中证500 Q-learning python3 step_6_rl_prediction/prepare_rl_state_dataset.py python3 step_6_rl_prediction/train_q_learning_zz500.py # Step 7: 沪深300 单标的(可选) python3 step_7_rl_hs300/prepare_hs300_state_dataset.py python3 step_7_rl_hs300/train_q_learning_hs300.py # Step 8: 多 ETF 泛化回测 python3 step_8_rl_multi_etf/run_multi_etf_q_learning.py ``` ## Pipeline ### Step 1: Data Prepare 目录:`step_1_data_prepare/` 筛选在共同交易区间内每日都有日线数据的标的,生成 `_data/index_cleaned.csv`(99 个标的:宽基指数 14、宽基 ETF 11、行业/主题 ETF 74)。 详细说明见 `step_1_data_prepare/README.md`。 ### Step 2: Correlation 目录:`step_2_correlation/` 聚类前验证指数/ETF 之间是否完全同涨同跌。当前结论:不存在完全同涨同跌组合,横截面聚类仍有意义。 详细说明见 `step_2_correlation/README.md`。 ### Step 5: Monthly Walk-Forward Clustering 目录:`step_5_clustering_monthly/` 全文聚类主方案。特征集 `same_day_daily_kline_tail_proxy`,流程: 1. 约两年历史窗口训练 `StandardScaler + PCA + KMeans`; 2. 对下一个月 `transform + predict`,得到样本外 Regime 标签; 3. 每月滚动,共 18 个窗口(W1~W18)。 主要输出: - `walk_forward_predicted_labels.csv`:样本外 Regime 标签(**RL 唯一标签来源**) - `walk_forward_k_overall_summary.csv`:K 值稳定性对比 - `walk_forward_k_metrics.csv`:各窗口聚类指标 K 值选择(18 窗口均值): | k | avg_silhouette | avg_predict_empty_clusters | predicted_style_count | | --- | --- | --- | --- | | 3 | 0.2411 | 1.06 | 2 | | **4** | **0.2839** | **1.50** | **3** | | 5 | 0.2050 | 2.11 | 4 | | 6 | 0.1752 | 3.00 | 5 | 预测期(k=4,339 天)风格分布:小盘领涨型 258 天、成长领涨型 54 天、高波动下跌型 27 天。 详细说明见 `step_5_clustering_monthly/README.md`。 ### Step 6: RL State Dataset & ZZ500 Q-Learning 目录:`step_6_rl_prediction/` 将 walk-forward 标签与中证500 尾盘特征、状态转移特征整合为 RL 决策数据集,并训练 Q-learning。 - 标签:`_data/5_clustering_monthly/walk_forward_predicted_labels.csv`(k=4) - 输出:`_data/6_rl_prediction/rl_decision_dataset_k4.csv` - 动作空间:50% / 75% / 100% 详细说明见 `step_6_rl_prediction/README.md`。 ### Step 7/8: Multi-ETF Experiments | 目录 | 内容 | | --- | --- | | `step_7_rl_hs300/` | 沪深300 单标的 Q-learning | | `step_8_rl_multi_etf/` | 上证50、深证100、科创50、创业板、中证1000 多 ETF 回测 | 主要输出:`_data/8_rl_multi_etf/multi_etf_test_risk_adjusted_comparison.csv` 测试期(2026-04~06)风控摘要:5 只 ETF 中 4 只在最大回撤或夏普比率上改善(上证50 收益与风控双改善;中证1000 改善有限)。 ## Current Status - 数据清洗与完整性验证 - 相关性验证 - 尾盘 K 线代理特征月度 walk-forward 聚类(k=3/4/5/6 对照,主方案 k=4) - 基于 walk-forward 标签的 RL 状态数据集构建 - 中证500、沪深300 及多 ETF Q-learning 回测 开源地址:https://gitee.com/silver6wings/silverRegime