高股息到底是不是真策略?我把自己的选股规则跑了一遍面板回归(附完整Stata代码)_新浪财经_新浪网

登录新浪财经APP 搜索【信披】查看更多考评等级

(来源:小鱼量化)

微博/雪球:小鱼量化

今年高股息这个方向,说实话有点难受。

最具代表性的中证红利指数,年度收益只有-0.63%。我在雪球上的两个公开组合,整体浮亏五六个百分点。去年底重仓加的酒ETF,股息率是超过 4% 的,看着性价比不错,结果随着机构散户不断抛售,我一路接盘,浮亏也有四五万。

持仓难受的时候,人最容易问一个刺耳的问题:

高股息到底是个真策略,还是我把"跌得少"误当成了"赚得多"?

嘴上争论没有意义。我干脆把自己平时用的选股规则,翻译成一个能验证的模型,跑了一遍数据。这篇文章把完整过程公开——规则怎么变成假设、数据怎么构造、代码怎么敲、结果怎么读,全部给你。

顺带说一句:这套流程和一篇金融/经管论文的实证部分,是同一套骨架。

一、我的高股息股票池是怎么筛的

先说清楚我的池子是怎么来的,不然后面的模型是空中楼阁。

我的「高股息 Top 100」(xiaoyulianghua.com/dividend-top100/)用的是这几条口径:

规则

具体口径

分红连续性

连续三个完整财年实施常规现金分红

股息率

最新完整财年每股常规现金分红 ÷ 当前价格

近三年平均股息率

近三年每股常规分红算术平均值 ÷ 当前价格

行业分散

固定版本一级行业分类,每个行业最多 5 只

数据纪律

不使用模拟股票或伪造股息率;榜单只是研究清单,不代表收益承诺

这四条不是随便定的,每一条都在解决一个具体的问题:

① 为什么要求"连续三个完整财年"?因为单年高分红太容易造假了。某一年业绩暴增、大股东要套现、或者干脆是特别分红——这种股息率看着漂亮,明年就没了。我要的是能持续拿到的现金回报,不是一次性的数字。三个完整财年是最低门槛,能过滤掉绝大多数"伪高息"。

② 为什么要算两个股息率?最新年度股息率反映"现在",近三年平均值反映"稳定性"。两个都高的公司,才是真的稳定分红;今年高、三年平均低的,多半是刚冒出来的;今年低、三年平均高的,可能在走下坡路。两套口径交叉验证,比只看一个数靠谱得多。

③ 为什么限制每个行业最多 5 只?因为不限制的话,这个池子会被银行、煤炭、高速公路塞满。A股高分红公司有极强的行业聚集性——按股息率无脑排序,前 100 只里可能 40 只是银行。那样的"组合"根本不是组合,是一个押注单一行业的赌注。行业上限是强制分散,逼着我去其他行业里找次优解。

④ 为什么强调不用模拟数据?因为回测里最常见、也最致命的骗术,就是用"假如我当时买了"来编收益。真实可得的价格、真实已实施的现金分红,这两样凑不齐的标的,宁可不进池子。

二、关键一步:这套选股规则,本质上就是一份研究设计

写到这里你会发现一件有意思的事——我上面那四条规则,几乎原封不动对应着实证研究里的四个标准动作。

我的选股规则

对应的实证方法

术语

连续三个完整财年分红

样本筛选条件

Sample Selection

双口径股息率交叉验证

替换核心变量度量方式

稳健性检验

每行业最多 5 只

控制行业层面冲击

行业固定效应

剔除不可验证的数据

数据真实性约束

数据清洗

这不是巧合。投资和做研究,面对的是同一个问题:怎么从一堆噪声里,把真正的因果关系挑出来。

投资者想知道"高股息能不能带来超额收益",研究者想知道"股息率对收益率有没有显著正向影响"——这是同一个问题,只是换了套说法。

下面把它正式翻译成模型和代码。

三、研究假设与变量设定

H1:在控制了市值、估值、盈利能力、杠杆率之后,股息率仍然对个股收益率有显著正向解释力。

H2:该效应在"连续三年稳定分红"的样本中更强。

H1 检验的是"高股息有没有用",H2 检验的是"我那条'连续三年'的筛选门槛到底有没有道理"——H2 本质上是在用数据检验我自己的选股规则。

变量表:

角色

变量

说明

被解释变量

ret

个股年度收益率

核心解释变量

divyield

最新年度股息率

核心解释变量(替代理量)

divyield_avg3

近三年平均股息率

分组变量

div_continuous3

是否连续三年常规分红(1=是,0=否)

控制变量

size

市值(取对数)

控制变量

bm

账面市值比

控制变量

roe

净资产收益率

控制变量

lev

资产负债率

固定效应

code

 / year / industry

个体 / 年份 / 行业

控制变量不是凑数。 高股息股票往往是大市值、低估值、成熟期的公司——不控制这些,你测出来的"股息率效应"很可能只是"大市值效应"的影子。这也是盲审专家最爱问的一句话:你的核心变量是不是个代理变量?

四、完整代码(可直接跑)

我把代码拆成六段,每段都能单独跑。这样你在手机上看不会糊成一团,也方便照着一步步敲。

① 装外部命令(只需执行一次)

sscinstallwinsor2, replacesscinstallesttab,  replacesscinstallreghdfe, replace

② 导入数据、声明面板

use"dividend_data.dta", clearxtset code year

xtset 这一步不能漏,漏了后面所有 xtreg 都会报错。

③ 构造"连续三年分红"分组变量

* d_div = 当年是否实施常规现金分红bysort code (year): gen d3 = ///  (d_div==1 & d_div[_n-1]==1 & ///   d_div[_n-2]==1) if !missing(d_div)

这一行对应我股票池的第一条筛选口径,也是后面异质性分析的分组依据。

④ 数据清洗:缩尾 + 共线性检查

summarize ret divyield size bm roe levwinsor2 ret divyield size bm roe lev, ///  cuts(1 99) replacereg ret divyield size bm roe levvif

vif 大于 10 就要警惕,说明控制变量之间高度相关,系数不可信。

⑤ 基准回归 + 四组稳健性检验

* 基准:双向固定效应 + 聚类稳健标准误xtreg ret divyield size bm roe lev ///  i.year, fevce(cluster code)estimates store m1* ① 换核心变量口径:近三年平均股息率xtreg ret divyield_avg3 size bm roe ///  lev i.year, fevce(cluster code)estimates store m2* ② 行业 × 年份联合固定效应reghdfe ret divyield size bm roe lev, ///  absorb ///  vce(cluster code)estimates store m3* ③ 核心变量滞后一期,缓解反向因果xtreg ret L.divyield size bm roe lev ///  i.year, fevce(cluster code)estimates store m4* ④ 子样本:只在连续三年分红组内跑xtreg ret divyield size bm roe lev ///  i.year if d3==1, fevce(cluster code)estimates store m5

注意基准回归里没有重复加 i.industry——xtreg, fe 已经吸收了个体层面不随时间变化的行业属性,重复加会被自动丢弃。

⑥ 导出论文三线表

esttab m1 m2 m3 m4 m5 using ///  "result.rtf", replace///  b(%6.3f) se(%6.3f) ///  star(* 0.1 ** 0.05 *** 0.01) ///  stats(N r2_a, fmt(%9.0fc %9.3f)) ///  title("表1 基准回归与稳健性检验")

五、几个关键点,比代码本身更重要

1. 为什么用固定效应,不用普通 OLS?每只股票都有"不随时间变化"的特质——行业属性、治理水平、品牌溢价。不控制这些,它们全被丢进误差项,会污染核心变量的系数。固定效应用的是同一只股票自身在不同年份的变化来识别,干净得多。

2. 为什么一定要 vce(cluster code)?同一只股票多年的误差项是相关的(今年涨的公司明年大概率还涨)。用普通标准误会严重低估标准误,把本来不显著的结果"跑"成显著。这是最容易被盲审一枪打穿的地方。

3. 稳健性② 是这几条里最值得学的。reghdfe ... absorb(code year#industry) 这一行同时吸收了个体效应和"行业 × 年份"的联合效应。它能排除掉一种常见干扰:某一年煤炭行业整体大涨,导致煤炭股的高股息看起来很有效——但那不是股息率的功劳,是行业 Beta 的功劳。

4. 内生性要老实承认。股息率和收益率可能存在反向因果(业绩好的公司才敢高分红)。滞后一期只能缓解、不能根治,更严谨的做法是找工具变量或做双重差分。论文里坦白写一个"研究局限",远比被人指出来强。

六、结果怎么读

我这里不给你一个编出来的数字表——真实系数取决于你的数据区间和样本,跑完才有。但读表的框架是固定的,看三样:

▪符号:divyield 系数是正还是负?正,说明股息率确实带来正向收益。

▪星号:* 10%、** 5%、*** 1% 显著。没有星就不敢下结论。

▪经济意义:系数 0.03 意味着股息率每提高 1 个百分点,年化收益提高 3 个百分点——这个数大到不合常理就得回头查数据,通常是量纲或缩尾出了问题。

表 2 才是我最关心的:如果"连续三年分红"组的系数显著大于"非连续"组,那我那条筛选门槛就有了数据支撑;如果两组差不多,那这条门槛就只是在自我安慰,该改。

这也是我一直强调的:自己信奉的选股规则,值得用数据检验一遍,而不是用信仰维护它。

最后提醒一句:学术显著 ≠ 实盘可用。 统计上显著的东西,扣掉交易成本、冲击成本、红利税之后还能剩下多少,才是投资者真正该算的账。

七、这套骨架,换个皮就是一篇论文

把被解释变量从"收益率"换成任何一个你关心的结果变量,核心解释变量换成任何一个你怀疑有影响的因子,控制变量按文献补齐——一篇经管/金融实证论文的实证部分就成型了。

比如:

- 被解释变量 → 企业创新投入;核心变量 → 数字化转型程度

- 被解释变量 → 股价崩盘风险;核心变量 → 信息披露质量

- 被解释变量 → 审计费用;核心变量 → 高管特征

难住大多数人的从来不是"不会写",是"跑不通":数据拿不到、代码报错、结果不显著、稳健性补不上。这四件事,恰好都是可以教、可以练、可以标准化的。