基于个人 A 股实盘经验的低位企稳量价行为因子研究
本项目基于个人 A 股实盘经验中对低位横盘、波动率压缩与成交量结构变化的观察,构建低位企稳量价行为因子,并通过参数扫描、IC 检验、条件池检验、消融实验和稳健性分析验证其有效边界。
一句话定位:这不是一个"全市场强 alpha 策略",而是一个用于展示量化研究完整流程的研究型项目。
在 A 股实盘交易中,我观察到一类反复出现的现象:某些股票在经历长期下跌后进入低位横盘阶段,期间成交量逐步萎缩、波动率压缩,随后出现量价结构变化。这类模式在传统技术分析中常被归为"底部形态",但缺乏系统的量化验证。
本项目的出发点是:不停留在主观经验层面,而是将观察到的量价行为拆解为可计算的特征,用统计检验和消融实验验证其有效边界。
在"低位 + 企稳"的股票池中,特定的量价行为特征(OBV 斜率、量能结构、换手率衰减、量能异动、价格重心)可以区分"有价值的底部横盘"和"无价值的死水横盘"。
原始行情数据
↓
特征构建 (5 类量价行为特征 → factor_score 0-5)
↓
低位 + 企稳 条件池筛选
↓
factor_score >= 4 阈值过滤
↓
事件驱动回测 (止损 + 移动止盈 + 时效退出)
↓
因子检验 → 消融实验 → 稳健性分析
5 类量价行为特征:
| 特征 | 计算逻辑 | 含义 |
|---|---|---|
| f_obv_slope | OBV 30 日滚动斜率 > 0 | 资金流向趋势 |
| f_vol_ratio_ud | 上涨日均量 / 下跌日均量 > 1.2 | 量能结构偏多 |
| f_vol_decay_slope | 成交量 30 日斜率 < 0 | 换手率收缩 |
| f_vol_spike_pct | 异动天数占比 > 5% | 量能突变信号 |
| f_close_offset_pct | 收盘价高于中位数天数 > 55% | 价格重心上移 |
综合得分:factor_score = 5 个二值条件之和 (0-5)
买入条件:
- 低位:
price_rank < 0.14(过去 300 日价格区间中的相对位置) - 企稳:30 日振幅 < 15%
- 量价信号:
factor_score >= 4
执行口径(T+1 open):
- T 日收盘后根据 T 日已知数据生成买入/卖出信号
- T+1 日使用开盘价执行,买卖均加计滑点(0.05%)
- 若 T+1 日无数据则顺延至下一可交易日
动态仓位:
- score=5 → 25%,score=4 → 20%,score=3 → 15%
出场规则:
- 止损:亏损 > 5%
- 移动止盈:涨幅达 25% 后,从最高点回撤 10%
- 时效退出:持仓 > 60 天且收益 < 5%
factor_score 在全市场 Rank IC 为 -0.051(20d),IC 显著为负。在全市场中,"量价信号越强"的股票未来收益反而越低。
在"低位 + 企稳"条件池中,factor_score 的 Rank IC 从 -0.051 改善到 -0.017,f_close_offset_pct 甚至翻正。条件筛选本身起了主要作用。
消融实验显示:
- 仅低位+企稳(无因子):-30.2%
- +score>=3:-28.4%
- 原始研究版本在 T日收盘信号、T+1日开盘执行口径下,score>=4 消融组 total_return 约为 +104.85%。该结果为历史回测,不代表可实盘收益
- +score>=5:+97.1%
- score<=1(反向):-49.5%
去掉最大盈利 5 笔后,收益从 +104.85% 降到约 +5.39%。159 笔交易中 top5 贡献了约 95% 的利润。这说明收益显著右尾依赖,独立稳健性仍需进一步验证。
- 只止损:-16.0%(没有出场释放资金)
- 只移动止盈:+26.0%(但平均持仓 421 天)
- 止损+移动止盈:+43.7%
- 完整规则:+104.85%(原始研究版本 T+1 open 历史回测口径,时效退出贡献 +61% 增量收益)
Walk-Forward 验证:训练集 Calmar 3.33 → 样本外 Calmar 1.59,衰减 52%(可接受范围)。
| 维度 | 测试内容 | 结论 |
|---|---|---|
| 阈值稳定性 | Rolling 3-year 最优阈值 | score>=4 在 4/5 窗口中最优 |
| 极端收益依赖 | 去 top5 / 封顶 50% | 有一定依赖,封顶 50% 后仍盈利 +48.8% |
| 出场规则消融 | 5 种出场规则组合 | 三规则缺一不可 |
| 统计口径修正 | 回测结束强制平仓 | B/C 组胜率从 0%/100% 修正为 12.8%/73.7% |
- 因子 IC 为负:全市场范围内因子不是 alpha 来源,而是过滤器
- 阈值敏感:score 从 3 到 4 是断崖式跳变,高度依赖阈值选择
- 右尾依赖:收益集中于少数大幅盈利交易
- 信号数量下降:2024 年 563 个信号,2025 年 307 个,逐年递减
- 未考虑行业/市值分层:可能存在风格暴露
- 未考虑涨跌停、停牌:实际执行可能受限
a-share-low-position-price-volume-factor-research/
├── README.md # 本文件
├── PROJECT_MAP.md # 项目结构详解
├── FINAL_RESEARCH_REPORT.md # 完整研究报告
├── RESUME_PROJECT_DESCRIPTION.md # 简历项目描述
├── INTERVIEW_QA.md # 面试问答
├── TODO.md # 后续任务
├── requirements.txt # Python 依赖
├── .gitignore
├── src/ # 核心代码
│ ├── features.py # 特征构建
│ ├── backtest.py # 回测引擎
│ ├── factor_analysis.py # 因子检验
│ ├── ablation.py # 消融实验
│ ├── robustness.py # 稳健性检验
│ └── utils.py # 通用工具
├── scripts/ # 运行脚本
│ ├── run_backtest.py
│ ├── run_factor_analysis.py
│ ├── run_ablation.py
│ └── run_robustness.py
├── configs/
│ └── strategy_config.yaml # 策略参数配置
├── data/
│ └── README.md # 数据格式说明
├── results/
│ ├── summary/ # 关键结果 CSV
│ └── figures/ # 关键图表
└── docs/
# 安装依赖
pip install -r requirements.txt
# 准备数据 (见 data/README.md)
# 本仓库不包含完整 A 股行情数据,用户需自行准备
# 将 A 股日线数据存为 data/cache/dataset.pkl
# 运行回测 (T+1 open execution)
python scripts/run_backtest.py
# 运行因子检验
python scripts/run_factor_analysis.py
# 运行消融实验
python scripts/run_ablation.py
# 运行稳健性检验
python scripts/run_robustness.py本项目仅用于量化研究学习与方法展示,不构成任何投资建议。策略基于历史数据回测,过去的表现不代表未来收益。实盘交易存在亏损风险,请谨慎决策。
