进阶多因子+动态加权+估值择时 A股量化中低频方案
方案概述
频率: 中低频(日频/周频调仓)
市场: A股
核心思想:
- 多因子: 复合多种因子(估值、质量、动量、波动、市值等)
- 动态加权: 根据市场环境动态调整因子权重,不是固定权重
- 估值择时: 基于大盘估值判断整体仓位,牛熊择时
目录结构
a-shares-quant-factors-20260327/
├── README.md # 本文档
├── __init__.py
├── factors/ # 因子计算模块(每个因子独立文件)
│ ├── __init__.py
│ ├── base_factor.py # 因子基类
│ ├── pe_factor.py # 市盈率PE因子
│ ├── pb_factor.py # 市净率PB因子
│ ├── roe_factor.py # ROE净资产收益率因子
│ ├── momentum_factor.py # 动量因子
│ ├── volatility_factor.py # 波动率因子
│ └── size_factor.py # 市值因子
├── strategies/ # 策略主逻辑
│ ├── __init__.py
│ └── multi_factor_dynamic_strategy.py # 主策略
└── utils/ # 工具函数
├── __init__.py
├── factor_combiner.py # 因子加权合成
├── dynamic_weight.py # 动态权重计算
└── market_timing.py # 大盘估值择时
使用方法
from vnpy.trader.app.ctaStrategy import CtaTemplate
from strategies.multi_factor_dynamic_strategy import MultiFactorDynamicStrategy
# 初始化策略
# 按照vn.py标准CtaStrategy接口使用
因子列表
| 因子 | 类型 | 方向 | 说明 |
|---|---|---|---|
| PE (市盈率) | 估值 | 越小越好 | 估值越低分数越高 |
| PB (市净率) | 估值 | 越小越好 | 估值越低分数越高 |
| ROE | 质量 | 越大越好 | 盈利能力越强分数越高 |
| 近1月动量 | 动量 | 越大越好 | 趋势越强分数越高 |
| 近3月动量 | 动量 | 越大越好 | 趋势越强分数越高 |
| 波动率 | 风险 | 越小越好 | 波动越小分数越高 |
| 市值 | 规模 | 中小盘偏好 | 市值越小分数越高 |
动态加权逻辑
- 每月底根据各因子近期IC值调整权重
- IC越高的因子权重越大
- 避免长期因子失效
估值择时逻辑
- 计算全市场PE/PB分位数
- 分位数高位降低仓位
- 分位数低位提高仓位
- 仓位范围: 0.3 -> 1.0
创建日期: 2026-03-27
作者: 翼德 (张飞)