为什么质地优良、刚披露高分红且无实质利空的高股息白马股,会在特定时期突然遭遇单边破位下挫?许多投资者猜测是公司隐藏了重大风险,或资金在刻意打压。金融微观结构实证显示,这源于重仓该股票的公募机构遭遇了负债端集中赎回。在法定现金备付耗尽与流动性约束下,交投活跃的高股息蓝筹沦为应急变现工具,引发短期击穿买方深度的“资产贱卖(Asset Fire Sales)”。厘清这一传导机制,有助于在左侧规避冲击折价,在右侧捕捉流动性均值回归。

本文是「红利与宏观择时」系列的第四篇。全系列从红利资产出发,系统解构资产定价、股权期限结构、动量攻防与宏观流动性周期:

  • 篇章一:现值解耦 | 拆解股息率:分红预期 vs. 贴现率预期
  • 篇章二:期限结构 | 现金流久期:繁荣期配短久期红利,衰退期换长久期成长
  • 篇章三:动量攻防 | 攻防杠铃的尾部风险:熊市反弹的期权化逼空与自适应控仓
  • 篇章四:资金微观挤兑(本篇) | 机构被迫抛压与流动性折价错杀
  • 篇章五:流动性双螺旋(筹备中) | 融资流动性与市场流动性恶性共振预警
  • 篇章六:宏观贴现率之锚(筹备中) | 美债供给、期限溢价与全球资产定价

红利与宏观择时(四):机构资金流与资产贱卖冲击
红利与宏观择时(四):机构资金流与资产贱卖冲击

本文目录

挑选高股息标的时,常会遇到一种反常走势:

标的分红历史稳定,资产负债表扎实,股息率有 6%,刚披露的年报平稳增长,全市场找不到实质利空。

但在随后的两个月里,股价突然遭遇连续大单抛售。日 K 线单边阴跌破位,两个月内累计下挫 15% 到 20%。

论坛里通常有两种声音:一种猜公司有隐瞒的坏账暴雷,大资金提前离场;另一种猜主力故意打压吸筹,逼出带血筹码。顺着第一种恐慌,容易割在估值底部;顺着第二种猜测,又容易在左侧抛压密集期盲目补仓。

Joshua Coval 与 Erik Stafford(2007)在《股票市场中的资产贱卖》(Asset Fire Sales in Equity Markets)中,用微观结构数据给出了量化解释:

股价下挫的主因来自持仓机构的负债端赎回。在刚性赎回时限内,公募基金被迫展开强制平仓(Forced Liquidation),短期内直接打穿买方承接深度,造成流动性折价错杀。


一、看盘困惑:为什么绩优高股息标的会突然闪崩?

要理解这一现象,首先需要拆解专业机构投资者的制度约束。

1. 散户猜想 vs. 真实微观结构

普通散户在做交易决策时,资金久期通常具有较强弹性。若买入的股票下跌,只要未加杠杆,理论上可以选择长期持有,依靠分红现金流度过周期低谷。

公募机构则受制于完全不同的运作规则。公募基金是典型的“代客理财、即期申赎”架构,投资者可在任意开放交易日提交赎回申请。

散户投资者的申赎行为呈现明显的顺周期性:追涨杀跌。在经历长期单边震荡或调整后,投资者净值耐受力达到临界点,容易引发恐慌性赎回;或者市场涌现高热度主线时,投资者也会赎回老基金以转投热门品种。

这引发了周期底部的结构性错配:在股票估值低位、配置性价比突出的阶段,主动权益公募基金反而面临全行业集中的净现金流出。

2. 开放式公募基金的契约规定与法定流动性约束

当规模数十亿乃至数百亿的权益基金面临单季 15% 以上的巨额净赎回时,基金经理受制于刚性法律与契约约束:

  1. 法定现金缓冲垫极薄:根据监管与基金合同要求,主动权益基金通常须维持 80% 甚至 90% 以上的股票仓位,日常备付现金与流动性工具占比仅在 3% 到 5% 左右。单季净流出若超过 5%,账面现金储备数日内便消耗殆尽。
  2. 缺乏杠杆与借贷避险通道:以美国《1940年投资公司法案》(Investment Company Act of 1940)及国内公募运作规定为例,公募基金禁止向商业银行借款周转,禁止信用账户融资加杠杆,亦不可借券卖空对冲。
  3. 不可延期的 T+N 刚性兑付:赎回确认后,管理人必须在法定工作日(如 T+2 至 T+3 日内)向托管行及代销机构全额划转资金。

流动性耗尽且外部融资受限,基金经理只能在二级市场折价变现持仓以换取现金。

若仅为单一基金卖出,分散的买方深度足以消化;但若相同风格的基金群在同一时间窗集中遭遇赎回,数十家机构密集抛售共同重仓的股票,买方承接深度就会被直接打穿。


二、微观选择异象:困境基金为什么“卖赢不卖亏”?

既然基金必须变现股票以应对赎回,经理人会优先抛售哪些标的?

按常理推断:基金应优先止损跌幅沉重的劣质标的,保留收益良好或基本面扎实的优质股票。

Coval & Stafford (2007) 梳理了全美 1980 至 2003 年公募基金逐笔持仓与资金流数据,发现一个反常现象:遭遇赎回压力的公募基金在强制平仓时,普遍优先抛售前期表现稳健的“相对赢家”,而非跌幅沉重的“下行输家”。

Coval & Stafford 机构微观挤兑与资产贱卖冲击动态机制演示
Coval & Stafford 机构微观挤兑与资产贱卖冲击动态机制演示

1. 处置效应还是理性选择:流动性容量约束

这一异象源于双重现实约束:

  • 理性物理约束:流动性容量(Liquidity Capacity)
    在漫长调整期中,前期跌幅显著的标的通常日成交额萎缩,甚至频繁处于流动性匮乏状态。若尝试大额抛售流动性枯竭的亏损标的,成交缓慢,且会承受巨大的冲击成本(Price Impact),难以在法定时限内足额变现。
    相反,高股息龙头、公用事业及大市值蓝筹基本面扎实,日常交投活跃,买方挂单厚实。要快速变现数亿元现金应对兑付,高流动性优质资产便成为主要的应急取款通道。
  • 行为代理成本:避免账面浮亏兑现(Realization Utility)
    从行为金融学视角看,清仓深度套牢标的意味着将账面浮亏转化为已实现亏损,考核压力促使经理人保留浮亏标的以期后续修复,转而变现微利或抗跌持仓完成流动性交割。

最终结果是:基本面稳健、分红稳定且表现抗跌的高股息资产,反而在这场负债端赎回中承担了主要变现抛压。

2. Coval & Stafford 调仓实证:倒数 10% 基金的抛售行为

Coval & Stafford (2007) 将公募基金按季度实际净资金流划分为十个分位数(D1 到 D10)。实证数据呈现了清晰的调仓分化:

资金流分位数平均单季净资金流维持持仓概率加仓或新建仓概率减仓或清仓概率基金前 12 个月收益基金持仓股票平均数
D1(重度流出组)-13.6%31.6%16.1%52.3%+2.5%82.8
D2(高额流出组)-5.7%39.3%18.5%42.3%+0.7%84.9
D3(中度流出组)-3.6%43.2%19.3%37.4%+2.9%89.7
D4(温和流出组)-2.3%47.4%19.6%33.1%+5.9%87.7
D5(中性偏流出)-1.1%48.8%20.6%30.6%+8.3%90.2
D6(中性偏流入)+0.2%48.0%23.3%28.7%+9.5%99.9
D7(温和流入组)+2.0%45.1%27.4%27.5%+12.3%110.9
D8(中度流入组)+4.8%41.3%32.2%26.5%+13.4%122.5
D9(高额流入组)+10.6%36.4%38.3%25.3%+16.8%122.2
D10(重度流入组)+41.8%26.2%49.3%24.5%+21.1%102.9

数据表明:

  1. 流动性对交易方向的支配效应:处于资金流后 10%(D1,单季净流出 -13.6%)的承压基金,单季减仓或清仓旗下持仓的概率高达 52.3%(按持仓加权计算达 54.8%),是正常稳态基金的两倍以上。
  2. 抛售标的特征背离:D1 组被动抛售的股票,在卖出前 12 个月内持仓平均收益达 +23.9%,相对大盘超额收益接近 0%;而陷入赎回压力的公募基金整体组合,平均跑输大盘 -4.5%。困境基金实质上在通过减持表现抗跌的优质资产来换取流动性。

三、资产贱卖压力指标(PRESSURE)的数学定义与工程对齐

为衡量单只股票面临的受迫交易压力,Coval & Stafford 构建了股票级指标 PRESSURE。计算过程需要对齐定义与清洗流程,避免未来函数。

1. 基金季度资金流定义(Flow)

首先定义单只公募基金 $j$ 在季度 $t$ 的净资金流率 $flow_{j,t}$:

$$FLOW_{j,t} = TNA_{j,t} - TNA_{j,t-1} \cdot (1 + R_{j,t})$$

$$flow_{j,t} = \frac{FLOW_{j,t}}{TNA_{j,t-1}}$$

各项经济含义:

  • $TNA_{j,t}$:基金 $j$ 在季度 $t$ 末的净资产总值(Total Net Assets)。
  • $R_{j,t}$:基金 $j$ 在季度 $t$ 内的净值收益率。
  • $TNA_{j,t-1} \cdot (1 + R_{j,t})$:无外部申赎时,基金基于原有资产涨跌自然演化的预期规模。
  • $FLOW_{j,t}$:剔除资产自身变动后的外部净申赎金额。
  • $flow_{j,t}$:以期初规模标准化的资金流变化率。当 $flow_{j,t} < -5%$ 时,定义该基金处于受迫变现的流动性承压状态。

2. 股票级受迫抛压公式(PRESSURE)

在获取单只基金资金流状态后,汇总在季度 $t$ 内受资金流驱动对股票 $i$ 发生交易的机构数量差,并以期初持有该股的机构总数标准化:

$$PRESSURE_{i,t} = \frac{\sum_{j} \left(Buy_{j,i,t} \mid flow_{j,t} > 5\%\right) - \sum_{j} \left(Sell_{j,i,t} \mid flow_{j,t} < -5\%\right)}{\sum_{j} Own_{j,i,t-1}}$$

符号微观定义:

  • $Own_{j,i,t-1} \in \{0, 1\}$:期初持仓指示变量。若基金 $j$ 在季度 $t$ 期初持有股票 $i$,记为 1,否则为 0。分母 $\sum_j Own_{j,i,t-1}$ 即期初持有该股的公募基金总数。
  • $Sell_{j,i,t} \in \{0, 1\}$:减仓指示变量。若基金 $j$ 在季度 $t$ 减持或清仓了股票 $i$,记为 1,否则为 0。约束条件为该基金净流出 $flow_{j,t} < -5%$。
  • $Buy_{j,i,t} \in \{0, 1\}$:加仓指示变量。若基金 $j$ 在季度 $t$ 增持或新建仓股票 $i$,记为 1,否则为 0。约束条件为该基金净流入 $flow_{j,t} > 5%$。
  • 门槛约束:分母 $\sum_j Own_{j,i,t-1} \ge 10$。仅当期初至少有 10 家公募基金持有时,指标才具备统计代表性,以剔除低持股标的的微观噪声。

分类阈值标准:

  • 资产贱卖标的(Fire Sale Stocks):$PRESSURE_{i,t} \le -15%$。对应全市场受迫抛压排名前 5% 的标的,表明持有该股的机构中,有超过 15% 比例在遭遇大幅赎回时同步减持。
  • 增量追捧标的(Inflow-Driven Purchases):$PRESSURE_{i,t} \ge 25%$。对应全市场受迫买入排名前 5% 的标的。

3. 规避未来函数:持仓基准、退出处理与披露时滞对齐

工程计算上有三处细节需要校准:

  1. 分母锚定期初持股数($Own_{t-1}$):若分母采用期末持股数,被困境基金全额减持的股票其期末分母缩小,会导致压力指标在边界处异常发散。
  2. 完全出清行为的处理(Eliminated Positions):若基金期初持有某股而期末持仓记录清零,须在外连接对齐后明确标记为 $Sell = 1$,不可因记录缺失直接丢弃。
  3. 真实披露时滞与时点对齐(Point-in-Time Alignment):公募基金持仓按季定期披露(A 股季报法定披露窗口为季末后 15 个交易日,美股 13F 为季末后 45 天)。在季度 $t$ 运行期间,外部投资者无法实时观测全量持仓明细。因此在实盘决策中,“规避抛压”与“逆向介入”对应着不同的观察时点与反应机制。

四、24 年历史全样本实证:受迫平仓的 V 型轨迹与信息重估

Coval & Stafford 在 1980 至 2003 年共 24 年的样本区间内,对入选标的展开了涵盖事件前后各 12 个月(共 25 个月,从 $t-12$ 到 $t+12$)的月度累计异常超额收益(CAAR,基准为 CRSP 全市场加权指数)事件研究。

Coval & Stafford 机构受迫抛压实证:贱卖标的 V 型反转与自愿卖出永久折价对比
Coval & Stafford 机构受迫抛压实证:贱卖标的 V 型反转与自愿卖出永久折价对比

1. Panel A:受迫贱卖标的的 V 型反转(-10.07% 到 +7.74%)

被判定为资产贱卖($PRESSURE \le -15%$)的股票,月度异常收益轨迹呈现出典型的 V 型结构:

观察窗口月份定义累计超额收益 CAARt 统计量异常净抛压 PRESSURE市场微观特征
平稳潜伏期$t-12 \sim t-3$+0.75% $\to$ +0.09%(+1.20 $\to$ -0.12)-0.13% $\to$ -3.88%股价走势平稳,机构抛压尚未产生共振
集中强平期$t-2 \sim t$-10.07%(-11.52)-11.72% $\to$ -26.87%机构集中减持,买方深度击穿,单季深度回撤
抛压溢出期$t+1$-11.37%(-6.04)-20.64%季末披露期惯性下探,探明周期底部
企稳筑底期$t+2 \sim t+3$-11.34% $\to$ -10.41%(-5.83 $\to$ -5.28)-13.32% $\to$ -4.62%净抛压快速衰减,股价缩量止跌
均值回归期$t+4 \sim t+12$稳步反弹 +7.74%(+4.43)-3.77% $\to$ -0.89%抛压衰减归零,流动性折价逐步修复

实证数据证实:

  1. 在机构集中变现的 3 个月内($t-2$ 到 $t$),股票产生 -10.07% 的显著负超额,t 统计量达 -11.52。
  2. 抛压在强平季末($t$ 月)达到峰值(异常净抛压达 -26.87%)。由于部分基金在季末尚未全额完成变现,抛售惯性溢出至下季度首月($t+1$ 月),导致股价在 $t+1$ 月探明 -11.37% 的周期底部。
  3. 一旦被动平仓阶段结束($t+4$ 月起净抛压降至 3% 以内),被错杀标的展现出清晰的均值回归走势:在随后的 8 个月内($t+4$ 到 $t+12$),股价平均产生 +7.74% 的超额反弹(t = 4.43)。
  4. 若将筛选门槛收紧至 $PRESSURE \le -25%$,强平期单季跌幅达 -18.13%,而随后的右侧均值回归反弹幅度达 +15.01%。

2. Panel B:自愿调仓标的的永久性信息吸收

为检验 V 型反转是否源于“流动性错杀”而非“基本面利空信息”,Coval & Stafford 设立了对照组:资金充裕基金自愿抛售的股票(Unconstrained Voluntary Sales)。

在这一组别中,同样有超过 15% 的公募机构减仓该股,但减仓基金自身资金流稳健,无赎回变现约束,减仓纯粹基于投研团队对公司基本面走弱的判断(主动调仓)。

实证走势呈现出截然不同的结构:

  • 自愿减仓标的在集中卖出季度同样下跌(CAAR 下挫约 -5.12%);
  • 在随后的 12 个月内,股价未出现反弹迹象,CAAR 长期维持在 -3.8% 至 -1.8% 的低位水平。

两者的本质区别在于:基于基本面恶化的主动卖出,价格下跌属于永久性价值重估;基于流动性挤兑的受迫平仓,价格下跌属于流动性稀缺折价,一旦被动抛压出清,价格具有自发向内在价值均值回归的动能。

3. 外部性溢出与滞后踩踏机制

Coval & Stafford 进一步揭示了机构集中持仓的负外部性溢出(Externality Spillover):

由于多数权益基金持仓重合度较高,当基金 A 遭遇赎回被迫抛售股票 X 时,股票 X 的下跌会导致同样重仓 X 的基金 B 出现净值被动回撤。

基金 B 的投资者因净值走弱而在次季赎回,迫使基金 B 在滞后季度也加入抛售股票 X 的序列。

这种跨机构的传导链条,解释了为什么机构重仓股的流动性冲击通常不会在单周内结束,而是持续 3 到 4 个月。


五、手握红利底仓,如何构建实盘攻防系统?

通过观察窗口与触发条件的对齐,可以直接融入红利底仓的再平衡与风险管理流程中。

公募挤兑与资产贱卖全周期实盘攻防状态机
公募挤兑与资产贱卖全周期实盘攻防状态机

1. 左侧排雷(t-2 至 t+1):规避 -10.1% 的流动性杀估值陷阱

观察时点:季度末信息披露窗口(4 月、8 月、10 月的公募季报披露期),或通过盘后席位与大宗交易监控同门基金集中减持动向。

触发条件:

  • 标的期初持股机构数 $\ge 10$;
  • 测算受迫抛压 $PRESSURE \le -15%$,或重仓公募近半年资金净流出超过 10%。

动作:

  • 不接急跌筹码:当高股息标的市盈率回落、静态股息率升至 7% 甚至更高时,直觉上易被视为低估买点。实证表明,处于集中强平期的标的在 $t+1$ 月前鲜有有效反弹,左侧介入易直接承担平均 -10.07% 到 -11.37% 的流动性折价回撤。
  • 暂停增量加仓:存量底仓若基本面无实质恶化可继续收息,但增量资金应暂停配置该标的,待机构被动抛压释放完毕。

2. 底部观望(t+2 至 t+3):核验基本面与缩量筑底信号

观察时点:集中强平季度后的第 2 到第 3 个月($t+2$ 至 $t+3$ 月)。

两步甄别错杀性质:

  1. 排查企业现金流与分红持续性:调阅最新财报,核实经营活动现金流净额是否平稳、资本开支是否可控、资产负债率是否稳健。若盈利滑坡、债务压力增大导致分红预期下调,属于基本面恶化(对应自愿减仓),坚决放弃介入。
  2. 确认纯流动性受损:若主营业务稳健、派息承诺未变、ROE 保持平稳,可判定该标的深度调整主要源于持仓机构赎回引发的“资产贱卖”。

动作: 纳入重点观察名单,跟踪成交变化。当单日换手率降至历史低分位、股价不再创出新低时,表明机构变现抛压进入尾声。

3. 右侧捡金(t+4 至 t+12):流动性提供者策略与均值回归吃足

观察时点:事件发生后的第 4 个月起(即次季中后期)。

触发条件:

  • 异常净抛压 $PRESSURE$ 从低位收敛并回升至 -2% 以内(抛压收敛归零);
  • 股价在日线级别完成筑底,均线系统逐步收敛企稳。

动作:

  • 以流动性提供者(Liquidity Provider)身份介入:此时非自愿抛售基本出清,而因前期跌幅较大,市场观望情绪较浓,场外资金尚未大举流入。
  • 持有 6 到 12 个月(2 至 4 个季度):获取流动性折价修复带来的 +7.74% 到 +15.01% 超额均值回归空间。同时,以折价买入锁定了更高的实际到手股息率,实现“股息收益 + 估值修复”的双重回报。

4. A 股公募赎回潮与高股息资产的现实映射

在 A 股市场,这一机制同样多次得到印证:

在 2021 至 2024 年的市场周期中,部分重仓高估值赛道的主动权益公募因净值回撤面临持续赎回。

在流动性变现压力下,机构在消耗存量现金备付后,部分交投活跃的高股息蓝筹标的(包括部分消费与公用事业龙头)承担了变现职能。

在局部流动性承压期间,部分中证红利成分股在缺乏实质利空的情况下出现短期急跌,估值被动回落。

在左侧恐慌离场的投资者承担了流动性踩踏成本;而在抛压出清后提供流动性的投资者,在随后的修复周期中获得了估值回升与分红回报的双重收益。

5. 典型案例透视:不同资产类别的机构持股微观数据

为展示不同类型资产在真实市场中的机构持股微观结构,本节选取公开市场中具有典型代表性的大市值行业蓝筹与成长标的作为案例(涵盖高股息大金融、能源周期、芯片制造与平台经济),通过富途 OpenAPI 提取其港交所法定披露的确定性机构持股数据(截至最新法定披露期 2026 年 Q3)展开横向对照:

合规提示:以下案例仅用于微观流动性结构与机构持仓特征的学术探讨和数据演示,不构成任何投资建议或买卖推荐,亦不代表特定投资组合的持仓配置。

资产风格分类典型研究案例(公开市场基准成分)报告期机构持股家数 ($Own_t$)单季机构变动 ($\Delta Own$)机构持股总数 (亿股)机构持股占比占比变动微观流动性状态机特征
大金融高股息代表建设银行 (HK.00939)2026/Q3460 家+1 家2175.86 亿股83.17%+0.010%稳态安全区(高机构持仓,无集中抛压)
传统能源高股息代表中国神华 (HK.01088)2026/Q3272 家-2 家177.38 亿股81.78%+0.008%稳态安全区(近三季机构数稳定在 272~274 家)
石化周期高股息代表中国石油 (HK.00857)2026/Q3355 家-4 家1636.38 亿股89.41%-0.005%稳态安全区(机构持股近 90%,微幅净波动)
芯片制造高波代表中芯国际 (HK.00981)2026/Q3188 家+2 家36.48 亿股42.61%-0.108%平稳配置期(机构持股平稳微增)
平台经济成长代表美团-W (HK.03690)2026/Q3392 家-12 家19.69 亿股31.90%-0.532%机构持续减配期(连续三季单向减少累计 32 家)
互联网科技龙头代表腾讯控股 (HK.00700)2026/Q3845 家-34 家42.05 亿股46.75%-0.022%机构调仓分化期(单季机构数减少 34 家)

注:以上数据全部提取自富途 OpenAPI 机构持股接口(基于港交所法定披露数据库)。

基于公开数据的微观横向透视,可以得出两项客观规律:

  1. 优质高股息蓝筹代表处于稳态流动性安全区:
    • 建设银行、中国神华、中国石油等公开代表标的的机构持股总比例普遍处于 80% 至 90% 的极高区间,机构持仓底座极其厚实(460 家、355 家、272 家)。
    • 单季度机构家数变动 $\Delta Own$ 仅在 $\pm 4$ 家以内的极小范围浮动,数量变动率 $|\Delta Own / Own_{t-1}| < 1%$。
    • 这一真实数据有力佐证了本文核心论点:在常态下,主流高股息蓝筹的主要持有者为险资、主权财富与社保等长钱,负债端久期长、现金流稳健,并不存在全行业单向挤兑踩踏风险。
  2. 高贝塔与弹性成长代表呈现出更显著的机构再平衡特征:
    • 美团(HK.03690)的公开数据呈现出连续三个季度单边流出的特征(累计减少 32 家机构,机构持股占比由 32.43% 降至 31.90%);腾讯控股(HK.00700)在单季内机构持股家数也减少了 34 家。
    • 这表明弹性成长与高贝塔标的受主动型权益基金的资金申赎与阶段性调仓影响更为直接,微观筹码更容易面临持续再平衡。

附录:Coval & Stafford 抛压指标清洗复现脚本

为了在真实的基金持仓数据库中无偏差复现 $PRESSURE$ 指标,以下给出遵循学术规范的清洗脚本:

"""
Coval & Stafford (2007) 机构受迫交易压力指标 (PRESSURE) 纯函数实现
对齐论文规范:
1. 分母锚定期初持股机构数 (sum Own_t-1)
2. 完全出清标的 (Eliminated Positions) 显式填充 Sell = 1
3. 剔除期初持股机构数 < 10 的低流动性标的
"""

import pandas as pd
import numpy as np

def calculate_coval_stafford_pressure(
    holdings_df: pd.DataFrame,
    fund_flow_df: pd.DataFrame,
    min_owners: int = 10,
    distress_cutoff: float = 0.05
) -> pd.DataFrame:
    """
    参数:
    ----------
    holdings_df: 包含 ['fund_id', 'stock_id', 'period', 'shares'] 的持仓面板
                 period 建议为季度标签 (如 '2023Q1', '2023Q2')
    fund_flow_df: 包含 ['fund_id', 'period', 'flow_pct'] 的基金资金流面板
                  flow_pct = (TNA_t - TNA_{t-1}*(1+R_t)) / TNA_{t-1}
    min_owners: 股票期初最低持股基金数门槛 (默认 10 家)
    distress_cutoff: 受迫交易资金流阈值 (默认 5%)
    """
    # 1. 构造期初-期末相邻季度持仓变动表 (显式捕获出清行为)
    periods = sorted(holdings_df['period'].unique())
    holding_changes = []

    for i in range(1, len(periods)):
        prev_p = periods[i - 1]
        curr_p = periods[i]

        prev_hold = holdings_df[holdings_df['period'] == prev_p][['fund_id', 'stock_id', 'shares']].copy()
        curr_hold = holdings_df[holdings_df['period'] == curr_p][['fund_id', 'stock_id', 'shares']].copy()

        # 外连接以识别完全出清 (prev有, curr无) 与新建仓 (prev无, curr有)
        merged = pd.merge(prev_hold, curr_hold, on=['fund_id', 'stock_id'], how='outer', suffixes=('_prev', '_curr'))
        merged['period'] = curr_p
        merged['shares_prev'] = merged['shares_prev'].fillna(0)
        merged['shares_curr'] = merged['shares_curr'].fillna(0)

        # 标注期初持有状态与调仓动作
        merged['own_t_minus_1'] = (merged['shares_prev'] > 0).astype(int)
        merged['is_buy'] = (merged['shares_curr'] > merged['shares_prev']).astype(int)
        merged['is_sell'] = (merged['shares_curr'] < merged['shares_prev']).astype(int)

        holding_changes.append(merged)

    all_changes = pd.concat(holding_changes, ignore_index=True)

    # 2. 合并基金层面的资金流数据
    df = pd.merge(all_changes, fund_flow_df, on=['fund_id', 'period'], how='inner')

    # 3. 筛选受迫买入与受迫卖出
    # 受迫买入: 资金流入 > 5% 且发生加仓
    df['forced_buy'] = ((df['flow_pct'] > distress_cutoff) & (df['is_buy'] == 1)).astype(int)
    # 受迫卖出: 资金流出 < -5% 且发生减仓或出清
    df['forced_sell'] = ((df['flow_pct'] < -distress_cutoff) & (df['is_sell'] == 1)).astype(int)

    # 4. 按股票与季度聚合计算 PRESSURE
    stock_pressure = df.groupby(['stock_id', 'period']).agg(
        initial_owners=('own_t_minus_1', 'sum'),
        forced_buy_count=('forced_buy', 'sum'),
        forced_sell_count=('forced_sell', 'sum')
    ).reset_index()

    # 5. 应用持股机构数门槛约束
    valid_stocks = stock_pressure[stock_pressure['initial_owners'] >= min_owners].copy()

    # 6. 计算最终 PRESSURE 指标与分类标签
    valid_stocks['PRESSURE'] = (
        (valid_stocks['forced_buy_count'] - valid_stocks['forced_sell_count'])
        / valid_stocks['initial_owners']
    )
    
    # 判定标签: PRESSURE <= -15% 为资产贱卖,>= 25% 为资金追逐买入
    valid_stocks['is_fire_sale'] = valid_stocks['PRESSURE'] <= -0.15
    valid_stocks['is_inflow_purchase'] = valid_stocks['PRESSURE'] >= 0.25

    return valid_stocks

参考文献

  • Coval, J., & Stafford, E. (2007). Asset fire sales in equity markets. Journal of Financial Economics, 86(1), 124–158.
  • Shleifer, A., & Vishny, R. W. (1992). Liquidation values and debt capacity: A market equilibrium approach. The Journal of Finance, 47(4), 1343–1366.
  • Shleifer, A., & Vishny, R. W. (1997). The limits of arbitrage. The Journal of Finance, 52(1), 35–55.
  • Brunnermeier, M. K., & Pedersen, L. H. (2005). Predatory trading. The Journal of Finance, 60(4), 1825–1863.
  • Chevalier, J., & Ellison, G. (1997). Risk taking by mutual funds as a response to incentives. Journal of Political Economy, 105(6), 1167–1200.
  • Sirri, E. R., & Tufano, P. (1998). Costly search and mutual fund flows. The Journal of Finance, 53(5), 1589–1622.
  • Mitchell, M., Pulvino, T., & Stafford, E. (2004). Price pressure around mergers. The Journal of Finance, 59(1), 31–63.