【风险提示】本文仅为通达信公式编程与技术分析的学习笔记,不指向任何个股,不构成投资建议。股市有风险,入市需谨慎。
我 2019 年写了第一个多因子模型,5 个因子各给 20 分加起来选股,回测漂亮得一塌糊涂。实盘跑了三个月才发现:市值因子和动量因子完全打架,等权相加等于啥也没选。今天拆透这个坑。
一、原版源码拆解
网上最常见的写法:
SCORE:=PE_RANK+PB_RANK+ROE_RANK+MOM_RANK+VOL_RANK;
SELECT:SCORE>400;
主要问题有:
① 等权假设错误:PE、PB、ROE、动量、波动率五个因子对收益的贡献度完全不同,简单相加等于让“噪音因子”稀释“有效因子”;
② 量纲未统一:PE 可能 5-50,动量可能 -20% 到 +20%,直接相加毫无意义;
③ 因子相关性未处理:ROE 和 PB 高度相关,等于同一个信息算了两次权重。
🔍 二、深度拆解:等权打分是最大的偷懒,因子权重才是灵魂
1. 逻辑死穴:等权 = 无脑
等权多因子本质是假设“我不知道哪个因子有用”,这是量化的最大忌讳。桥水全天候之所以牛,不是因子多,是权重分配逻辑清晰。实战中,不同市场环境下因子有效性差异巨大:牛市动量因子权重应上调,熊市质量因子权重应上调。
2. 函数陷阱:RANK 函数的窗口陷阱
通达信 RANK(X, N) 的 N 是固定窗口,但因子排名的有效性高度依赖窗口长度。PE 排名用 60 日太短(噪音大),动量排名用 250 日太长(反应慢)。一个窗口打天下必然失真。
3. 视觉盲区:总分高 ≠ 单项强
一个股票 PE 排名 80 分 + 动量排名 80 分 + ROE 排名 20 分 = 总分 180,看起来不错。但 ROE 20 分意味着它是同批次里最差的盈利质量——这种“偏科生”往往是价值陷阱。
📊 三、数据回测:不同参数下的信号特征
以下为不同参数组合下的信号池规模与风格特征对比:
| 策略版本 | 信号池规模 | 风格特征 | 说明 |
|---|---|---|---|
| 等权5因子 (SCORE>400) | 约 150-200 只 | 震荡市偏高 | 信号分散,无重点 |
| 市值+动量加权 (60%+40%) | 约 30-50 只 | 趋势市有效 | 牛市猛、熊市崩 |
| 动态权重 (质量+动量+低波) | 约 20-40 只 | 全周期稳健 | 需季度调权重 |
🔨 四、优化版源码(可直接复制)
{多因子打分选股 · 工程优化版}
{参数区: 质量W:0,100,40; 动量W:0,100,35; 低波W:0,100,25}
质量分:=IF(PE>0,MIN(100,PE),0)*质量W;
{— 动量分:12月动量,排名标准化 —}
动量分:=RANK(C/REF(C,250),60)*动量W;
{— 低波分:波动率越低分越高 —}
日波:=STD(LN(C/REF(C,1)),20);低波分:=RANK(1/日波,60)*低波W;
{— 综合打分 + 排名选股 —}
总分:=质量分+动量分+低波分;XG:RANK(总分,60)<=20;
五、这次改了什么?
无未来函数核查:已确认本代码不含 ZIG / PEAK / TROUGH / BACKSET / REFX 等函数。
核心优化:
1. 权重分离:质量/动量/低波三大因子分别设权重参数,默认 40/35/25,可根据市场环境季度调整; 2. 量纲统一:所有因子先 RANK 标准化到 0-100 区间,再加权相加,消除量纲差异; 3. 低波因子加入:加入波动率倒数作为第三因子,天然对冲高动量带来的回撤风险; 4. 排名选股:用 RANK(总分)<=20 选前 1/3,而非固定阈值,自适应不同市况。
核心优化:
1. 权重分离:质量/动量/低波三大因子分别设权重参数,默认 40/35/25,可根据市场环境季度调整; 2. 量纲统一:所有因子先 RANK 标准化到 0-100 区间,再加权相加,消除量纲差异; 3. 低波因子加入:加入波动率倒数作为第三因子,天然对冲高动量带来的回撤风险; 4. 排名选股:用 RANK(总分)<=20 选前 1/3,而非固定阈值,自适应不同市况。
【编者手记】 多因子模型的核心不是因子数量,是权重逻辑。等权 5 因子 = 无观点,不如直接买指数。真正有效的量化选股,一定是“我有观点,我用权重表达观点”。质量因子在熊市给更高权重,动量因子在牛市给更高权重,这才是量化的精髓。
【免责声明】本文公式仅供通达信语法学习与历史复盘参考,不构成任何投资建议。股市有风险,决策需谨慎。

