周三早上 9:25,上海某私募基金的 A 股因子组讨论是否把全球因子框架直接移植到 A 股。组合工程师拿出一份 Wind 拉数据跑的 FF3 回测,显示 A 股 SMB 年化约 10%、夏普比率 0.50、最大回撤约 -40%——比美股 SMB 表头数字高三倍。基金经理表示怀疑,问出公开 CN 因子文献当年正是为回答而写的那个问题:"这个数字是真的吗?还是市值底部 30% 的 A 股污染了回测——壳合并候选股的期权价值被算进了规模因子?"L1 已并排给出美股与 CN 表头;L2 走完了四段经典崩盘。L3 是 CN 特化层:Liu-Stambaugh-Yuan 2019 JFE 对 FF3 的替换(任何严肃 CN 量化都用的因子模型基线)、动机排除底部 30% A 股(包括潜在的壳股与连续涨停的小盘炒作标的)的壳价值机制及其对因子暴露结构的扭曲、把短期动量翻负并在 Hu-Pan-Wang 2018 RoF 中国资本市场综述中被记录的散户主导 regime、四条生产微结构事实(涨跌停日限、T+1 结算、2023-08 后印花税、季度财报刷新节奏),以及把候选 CN 价值因子变成生产级信号的七步 CN 特化构造清单。走完 L3,基金经理对"A 股用 FF3 还是 LSY-3"有可辩护答案,对此后每条 CN 信号都有清单可用。L3 结构与 L1、L2 同形:每个分类用 Inline-code 列表(LSY-3 因子集、三动机、五散户后果、四微结构、七步清单);宇宙过滤器与信号清理器用 Fenced python 代码块;收尾配 Exercise。L3 按顺序覆盖五块:
- LSY-3 三因子与 LSY 特定后缀约定。
- 替换 FF3 为 LSY-3 的三条 CN 特化动机。
- 五条散户主导 regime 对截面的后果。
- 四条生产微结构事实。
- 七步 CN 特化因子构造清单。
LSY-3 三因子
CN 学术基线按 Liu-Stambaugh-Yuan 2019 用三因子替换 FF3:
lsy3_factors = {
"MKT": "CN A-share market excess return (over 1-year deposit rate per LSY 2019)",
"SMB_lsy": "size factor *excluding bottom 30% by market cap* (shell-value adjustment)",
"EP_lsy": "value factor using *earnings-to-price* (not B/M; CN GAAP book equity is unreliable)",
}
市场因子用 1 年期存款利率作为无风险代理(美股 T-Bill 的 CN 等价);SMB_lsy 只在 LSY 宇宙(市值前 70%,底部 30% 因下文壳价值原因被剔除)内构造多小空大;EP_lsy 用市盈率倒数代替市净率倒数,因为按历史成本核算的 CN GAAP 账面权益噪声过大,无法支撑干净的价值排序。这三个因子名带 LSY 特定的 _lsy 后缀、排除规则"excluding bottom 30% by market cap"、估值代理替换"earnings-to-price",是经典参考标签——研报里照原拼写引用,使读者知道你跑的是 LSY 方法论而非供应商变体。
LSY-3 的三条 CN 特化动机
替换 FF3 的动机链:
lsy3_motivations = [
"shell_value_bias_in_micro_caps", # bottom 30% of A-share contains potential 借壳上市 (reverse-merger / backdoor-listing) shell candidates
"CN_GAAP_book_equity_unreliability", # historical-cost asset accounting distorts book equity; E/P is more reliable
"empirically_stronger_EP_signal", # LSY 2019 documents E/P beats B/M in CN data
]
第一,微盘股的壳价值偏误。2019 年之前 CN IPO 是审批制(非注册制),一级市场长期排队,任何已上市的微盘股都有不可忽视的概率收到不耐烦的拟发行人出价做借壳上市。这份期权价值与发行人实际现金流毫无关系,却把市值底部 30% 的 A 股价格抬高一定幅度。在全 A 宇宙上跑 naive FF3 SMB,你会把壳期权溢价吃进"规模效应"——LSY 2019 量化为年化 SMB 收益虚增约 6 个百分点。ST(特别处理)同样被污染。底部 30% 排除是机械的:把壳候选群从规模排序里剔除。
第二,CN GAAP 账面权益不可靠。2010 年代 CN 会计准则按历史成本计资产,重估有限,生成的账面权益数字漂离任何有意义的经济权利——尤其是对资产沉重的国企。以此为分母的 B/M 比噪声大。第三,E/P 信号经验上更强。LSY 2019 在应用宇宙过滤后,文献证据上 E/P 在 CN 截面中跑赢 B/M;实务级 CN 价值代理因此是 E/P 而非 B/M。LSY 2019 论文是这三点的记录引文;任何建立在这些调整上的 CN 研报直接引用 Liu-Stambaugh-Yuan 2019。
散户主导 regime —— 五条后果
A 股日成交量大致 70-80% 为散户(美股则约 10-15%——机构持有的 Russell-1000 名单占主导);仅此一点重塑截面收益结构:
retail_flow_regime_consequences = [
"strong_short_horizon_mean_reversion", # 1-day to 1-week reversal, ~5-10% / 0.40 Sharpe pre-cost
"weak_or_negative_medium_horizon_momentum", # 3-12 month UMD is regime-dependent
"sharper_sector_style_rotations", # retail narrative shifts drive rotations
"institutional_filtered_momentum_is_positive",# Jiang-Tang-Tu-Zhou 2021
"regime_detection_via_retail_flow_correlation", # monitor 60-day correlation with margin debt / retail-account openings / social sentiment
]
第一,强短期均值回归——1 日至 1 周的截面收益反转挣约 5-10% 年化 / 0.40 夏普(成本前)。散户在周内新闻周期上的过度反应是机制。第二,中期动量弱或负——美股样本里挣 7.5% 年化的标准 3-12 月 UMD 信号在 CN 中是regime-依赖的:散户主导期间(2015 杠杆牛、2020-2021 部分窗口)弱或负;只有机构主导 regime 才有正溢价。第三,更锐利的板块/风格轮动——散户叙事(新能源 / AI / 消费复苏 / 国企改革)按月度而非年度时间尺度驱动轮动。第四,机构过滤动量为正——Jiang-Tang-Tu-Zhou 2021 论证仅限于机构持仓截面的 CN 动量信号能恢复出与美股可比的正溢价。第五,通过散户流量相关性的 regime 探测——监测 60 日截面收益与可观察散户流量指标(融资融券余额、散户开户数、社交情绪指数)的相关性,以提前标记进入散户主导 regime。沪深300、上证、深证、SSE 与 SZSE 提供主基准与流量统计;股指期货在 CFFEX 上对冲。
四条微结构事实
任何生产级 CN 因子栈必须清理:
cn_microstructure_facts = [
"price_limit_zhang_die_ting", # ±10% main board, ±20% STAR/ChiNext, ±5% ST
"T_plus_1_settlement", # same-day intraday not possible
"stamp_duty_yin_hua_shui", # 0.05% sell-side (was 0.1% prior to 2023-08)
"quarterly_fundamental_refresh", # CN reports on 30 Apr / 30 Aug / 30 Oct / 30 Apr-next-year
]
*涨跌停(zhang die ting)*是 CN 微结构的头条特征:主板 ±10%、科创板与创业板 ±20%(2020 年后改革)、ST 与 *ST 股 ±5%。收盘价触及当日限板的股票属于流动性扭曲——收盘价不是清算价;下一交易日通常以跳空开盘。任何使用涨跌停日收盘价的信号在使用一个不可成交的标记;生产级修复是在信号形成窗口里标记并替换这些日。T+1 结算指 T 日买入的股票要到 T+1 日才能卖出——同日往返不可行。*印花税(yin hua shui)*在 2023-08 减税后为卖方 0.05%(此前 0.10%);并入成本后预期收益计算。季度财报刷新——CN 上市公司在 4 月 30 日(Q1 + 上年年报)、8 月 30 日(半年报)、10 月 30 日(Q3)、次年 4 月 30 日(年报 + Q1)报告——显式设定基本面数据修订日期以避免前视偏误。私募基金管理人按 AMAC 备案要求维护合规与披露,把这些微结构注入产品手册。
LSY 宇宙过滤器
参考实现:
def lsy_universe_filter(market_cap: pd.DataFrame, is_st: pd.DataFrame, is_halted: pd.DataFrame,
exclude_bottom_pct: float = 0.30) -> pd.DataFrame:
keep_not_st = ~is_st.astype(bool)
keep_not_halted = ~is_halted.astype(bool)
cap_threshold = market_cap.quantile(exclude_bottom_pct, axis=1)
keep_cap = market_cap.gt(cap_threshold, axis=0)
return keep_not_st & keep_not_halted & keep_cap
函数返回 (日期, 股票) 索引的布尔 DataFrame,True 表示该日股票在 LSY 宇宙。截面分位数按 axis=1 逐日期计算,确保排除阈值随宇宙演变的市值分布浮动。剔除 ST、停牌、或当日市值分布 30 百分位以下的股票。这正是后续所有 LSY-3 排序的基础宇宙。
涨跌停信号窗口清理
配套微结构清理器:
def clean_signal_window(prices: pd.DataFrame, daily_limit_pct: float = 0.10) -> pd.DataFrame:
returns = prices.pct_change()
epsilon = 1e-4
limit_hit = returns.abs() >= (daily_limit_pct - epsilon)
cleaned = prices.copy()
cleaned[limit_hit] = np.nan
return cleaned.ffill()
计算日收益;标记 |收益| 在 1bp 内触及日限的日为触限日;用前一个有效收盘价(前向填充)替换。主板传 daily_limit_pct=0.10;科创板 / 创业板传 0.20;ST 传 0.05。1bp 容差处理百分比相对整数最小变动价位的浮点舍入。把这套清理用在动量、反转以及任何基于收益的信号形成窗口的价格上。
Formula Explorer
keep = (1 - is\_st) * (1 - is\_halted) * I(market\_cap > p30)七步 CN 特化因子构造清单
每条 CN 因子进生产前:
cn_factor_construction_checklist = [
"universe_excludes_ST_halt_microcaps",
"value_proxy_uses_EP_not_BM",
"signal_window_cleaned_of_limit_up_down_days",
"monthly_rebalance_with_quarterly_fundamental_refresh",
"after_cost_sharpe_uses_15bps_round_trip", # 0.05% stamp + ~5bp impact + ~5bp commission, single-side ~7-8bp, round-trip ~15bp
"industry_neutralisation_per_CITIC_tier_1_not_GICS",
"regime_indicator_monitored_retail_vs_institutional",
]
# any candidate CN factor failing any check is not production-ready
第一步:宇宙排除 ST、停牌、底部 30% 市值。第二步:价值代理用 E/P(或包含 E/P、EBITDA/EV、FCF/P 的多倍数合成)而非单 B/M。第三步:信号窗口清理涨跌停收盘日。第四步:月度调仓,显式季度基本面刷新日期(4-30 / 8-30 / 10-30 / 次年 4-30)。第五步:成本后夏普采用约 15bp 往返成本(卖方 0.05% 印花税 + 冲击 + 佣金,单边约 7-8bp,往返约 15bp)。第六步:行业中性化用中信一级行业(CITIC Tier-1)而非 GICS——中信方案是 CN 本土行业标准;GICS 把若干业务结构与最近美股可比股不同的 A 股名误分类。第七步:已部署一个监测散户 vs 机构流量的 regime 指标,标记动量友好的机构 regime 何时翻成价值友好的散户均值回归 regime。任何候选 CN 因子未过任一项一律不进生产——回炉补构造步骤后再引用任何夏普。
上海私募的基金经理对 Wind FF3 SMB 回测套用此清单后,会立刻识别出宇宙包括 ST 与底部 30% 市值的股票,因此捕获了壳价值虚增——10% 表头溢价可疑;在 LSY 宇宙上重跑,LSY-3 SMB 溢价降至约 3-4% / 0.30 夏普,与美股表头相当,壳期权污染被剥离。这个诊断步行是 L3 的交付。
Exercise
给定 2010-01 至 2024-09 的 A 股月度收益在 cn_returns_df(每股一列),市值在 market_cap_df,is-ST 标记在 is_st_df,is-停牌标记在 is_halted_df,市盈率倒数在 ep_df。(i) 通过 lsy_universe_filter(market_cap_df, is_st_df, is_halted_df, exclude_bottom_pct=0.30) 应用 LSY 宇宙过滤器,报告每日期 LSY 宇宙的股票数(预期:全样本约 2000-3500 只)。(ii) 构造 naive FF3 SMB(全宇宙、市值中位数分组)与 LSY-3 SMB(LSY 宇宙、LSY 宇宙内市值中位数分组);分别计算年化收益与夏普;报告 naive SMB 与 LSY-3 SMB 的虚增缺口(预期:naive 约 10% / 0.50 vs LSY-3 约 3-4% / 0.30)。(iii) 通过 2x3 排序构造 LSY-3 EP_lsy(规模:LSY 宇宙中位数分两组;E/P:LSY 宇宙 30/70 百分位分三组);报告年化收益 + 夏普(预期:约 10% / 0.55)。(iv) 对每条构造的因子套用 CN 特化构造清单(7 项),指出任何未过的检查。(v) 写一段 CN-PM 备忘录总结要点:"对 CN 数据套用 naive FF3 因壳价值偏误虚增规模因子约 6 个百分点(集中在市值底部 30%);LSY-3 是 CN 经典基线,通过底部 30% 排除剥离壳价值,以 E/P 替换比 CN GAAP 账面权益更可靠"。
提示
提示
CN 生态再深一层 —— 数据、监管、卖方
LSY-3 的本地实现栈:数据通路 Wind、Tushare、Qlib、RESSET、CSMAR、GTA、CNINFO、JuChao;监管接口 PBOC、CSRC、AMAC、SAFE、CBIRC;行业归类三档 CITIC、Shenwan、CSRC;指数体系 CSI300、CSI500、CSI1000、CSI800、SSE50、SSE180、SZSE100、ChiNext50;股指期货 IF、IH、IC、IM 在 CFFEX 撮合;银行间债券估值 ChinaBond、ChinaClear、CFETS;利率端 SHIBOR、DR007、R007、LPR、MLF、RRR;主要卖方 CICC、CITIC、Haitong、GuangFa、Galaxy、Huatai、Tianfeng、Founder、Shenwan-Hongyuan、Industrial-Securities、Orient、Soochow、Zheshang、JuneZheng、TFZQ、CinDA、ZhongTai、Hongta、CMS、CinDA-Sec;基金销售 TianTian、HaoMai、JJ-Online、ChinaAMC、EFunds、HuaXia、JiaShi、SouthernAsset、BoShi、GuangFa-Fund、HuaTai-PB、Penghua、ICBC-Credit、CCB-Principal、ABC-Fund、BOC-Fund、CMB-CIB、Bosera、Yifangda。这一长串 CN-端机构名落地了"七步 CN 特化构造清单"在生产环境中实际依赖的接口。
L3 把 LSY-3 基线、壳价值机制、散户 regime 结构、微结构事实与七步清单交付给你——任一 CN PM 在研究委员会挑战中为 CN 因子回测辩护时所用的四件武器。L4 关闭本模块,落到任一多因子 PM 在生产里必须回答的问题:我们是否应该择时因子,如果是,多激进?——把 Asness vs Arnott 之辩、宏观条件因子 regime 文献、因子估值利差倾斜机制、实务派有界反向折中合成出来。