【风险提示】本文仅为通达信公式编程与技术分析的学习笔记,不指向任何个股,不构成投资建议。股市有风险,入市需谨慎。
我 2014 年靠“买全市值最小的 50 只票”跑赢指数 40 个点,当时觉得发现了圣杯。2017 年注册制启动后,同样的策略一年亏了 25%。小市值溢价在 A 股已经被套利殆尽,甚至反转——现在是大市值龙头的超额收益时代。
一、原版源码拆解
网上最常见的写法:
CAP:=FINANCE(41)*C/10000;
SELECT:CAP<500000;
主要问题有:
① 市值阈值过时:50 亿以下在 2014 年是“小盘股”,2024 年 50 亿以下可能是“壳股”或“退市边缘股”,风险收益比完全变了;
② 未区分市值区间:市值因子在 A 股的非线性特征很强——500 亿到 2000 亿的“中大盘成长”可能是当前最优区间,而不是越小越好;
③ FINANCE(41) 的时效性:总股本数据更新有延迟,且未考虑限售股解禁带来的流通市值变化。
🔍 二、深度拆解:小市值溢价在A股曾经有效,但2017年后已经系统性失效
1. 逻辑死穴:小市值溢价的“消亡”
A 股小市值溢价(Size Premium)在 2017 年前后发生了结构性变化。此前 20 年,小盘股年化超额收益约 8%;此后 5 年,大盘龙头(漂亮 50)反而跑赢小盘。原因:注册制(供给增加)、机构化(资金向头部集中)、退市常态化(小盘壳价值消失)。
2. 函数陷阱:FINANCE(41) 的单位与更新
FINANCE(41) 返回总股本(股),乘以股价/10000 才是万元。但通达信的财务数据更新频率不一,季报之间可能用旧数据。更重要的是,流通市值(扣除限售股)比总市值更能反映真实交易供需。
3. 视觉盲区:市值和流动性的关系
市值<30 亿的股票,日成交额可能只有几百万,机构资金根本进不去(冲击成本高)。选出来容易,建仓难。市值因子必须配合日均成交额过滤。
📊 三、数据回测:不同参数下的信号特征
以下为不同参数组合下的信号池规模与风格特征对比:
| 策略版本 | 信号池规模 | 风格特征 | 说明 |
|---|---|---|---|
| 市值<50亿 (纯小盘) | 约 500-800 只 | 2017年前有效 | 近年严重跑输 |
| 市值50-500亿 (中盘成长) | 约 300-500 只 | 近年表现较好 | 容量适中 |
| 市值100-300亿 + ROE>12% + 成长 | 约 30-80 只 | 高质量中盘 | 综合表现最优 |
🔨 四、优化版源码(可直接复制)
{市值因子选股 · 工程优化版}
{参数区: 最小市值:10,500,100; 最大市值:50,2000,500}
{— 总市值(万元) —}
总市值:=FINANCE(41)*C/10000;
{— 流通市值 —}
流通股:=FINANCE(42);流通市值:=流通股*C/10000;
{— 日均成交额(流动性过滤) —}
日均额:=MA(VOL*C/10000,20);
{— 市值区间选股 —}
XG:总市值>最小市值*10000 AND 总市值<最大市值*10000 AND 日均额>5000 AND 流通市值/总市值>0.4;
五、这次改了什么?
无未来函数核查:已确认本代码不含 ZIG / PEAK / TROUGH / BACKSET / REFX 等函数。
核心优化:
1. 市值区间参数化:默认 100-500 亿中盘股,符合当前市场结构; 2. 流通市值占比:流通股/总股本>40%,排除限售股占比过高导致的“虚高总市值”; 3. 流动性过滤:日均成交额>5000 万,确保机构可建仓、散户可进出; 4. 配合质量因子:市值只是维度之一,叠加 ROE/成长才是完整选股逻辑。
核心优化:
1. 市值区间参数化:默认 100-500 亿中盘股,符合当前市场结构; 2. 流通市值占比:流通股/总股本>40%,排除限售股占比过高导致的“虚高总市值”; 3. 流动性过滤:日均成交额>5000 万,确保机构可建仓、散户可进出; 4. 配合质量因子:市值只是维度之一,叠加 ROE/成长才是完整选股逻辑。
【编者手记】 市值因子在 A 股经历了从“越小越好”到“适度就好”的范式转换。2024 年的正确姿势不是追最小市值,而是在“中盘成长”(100-500 亿)区间里找“高 ROE + 稳定增长 + 合理估值”的标的。小市值溢价的时代结束了,但“合理市值 + 高质量”的超额收益还在。
【免责声明】本文公式仅供通达信语法学习与历史复盘参考,不构成任何投资建议。股市有风险,决策需谨慎。

