A股信息不对称指标ASY构建指南:从Amihud非流动性到复合代理变量 📅 发布时间:2026/9/17 15:56:51 👁 浏览次数: 简介本资源是一份面向金融研究者、经管类硕博生及毕业设计学生的实证分析数据集聚焦上市公司信息不对称程度量化问题提供1991–2022年沪深北A股共59534条面板数据覆盖流动性比率LR、非流动性比率ILL、收益率反转GAM及两个综合指数ASY1/ASY2等7个核心指标支持Stata与Excel双格式分析。资源为单个70KB的DOCX文档内含完整指标定义、计算逻辑说明、Stata过程代码、原始数据验证路径含超2.8GB 2007–2021原始计算数据指引及参考文献支撑便于复现、拓展与方法比对。目前已有231人学习下载适用于金融计量课程作业、学术论文实证部分构建、毕业设计中信息效率或公司治理方向的深度分析尤其适配需兼顾理论严谨性与操作可复现性的中高级研究场景。1. 上市公司信息不对称程度ASY数据1991–2022不是“下载即用”的现成表格而是需从原始行情与财务数据中严格复现的学术度量指标很多刚接触公司金融或资产定价研究的朋友看到标题里“ASY数据1991-2022”“流动性比率”“非流动性比率”“收益率反转指标”这些词第一反应是网上搜到一个网盘链接点开.docx就能直接导入Stata或Python做回归——但现实恰恰相反。ASYAmihud Illiquidity Ratio 的衍生变体常指基于日度收益率与成交额构造的信息不对称代理变量本身没有官方发布源它不是像CSMAR、Wind那样由数据库厂商预计算好的字段而是依赖研究者对原始高频交易数据逐笔或日频、收盘价、成交量、成交额、流通股本等底层要素的清洗逻辑、时间窗口设定与稳健性处理共同决定的。1991–2022年A股跨度极大早期数据缺失严重如1991–1996年多数券商未保留逐日成交额交易所披露标准多次变更2006年股权分置改革后流通股定义变化、2013年融资融券标的扩容、2019年科创板引入做市商报价这些都会导致ASY值在断点处不可比。本文不提供任何网盘链接此类.docx文件普遍存在字段定义模糊、时间范围错位、未声明计算口径等问题而是带你从零构建一套可复现、可验证、适配中国资本市场演进特征的ASY计算流程——适用于实证论文写作、因子回测、监管合规分析等严肃场景尤其适合需要向期刊或风控部门说明指标生成逻辑的研究者与量化工程师。2. ASY指标的本质不是单一公式而是三类流动性代理变量的组合逻辑与市场微观结构映射ASY并非一个固定公式而是学术文献中对“信息不对称如何通过交易行为显化”的建模尝试。其核心思想是当投资者掌握私有信息时会倾向于在流动性较差即单位成交额引发更大价格冲击的股票上集中交易从而推高该类股票的价量敏感度。因此ASY本质是用可观测的交易摩擦反推不可观测的信息环境。当前主流实现路径有三类需根据研究目标选择主干并明确声明2.1 Amihud非流动性比率最基础且可追溯至1991年的日度代理变量Amihud (2002) 提出的非流动性比率定义为$$ \text{ILLIQ}{i,t} \frac{|R{i,t}|}{\text{DollarVolume}{i,t}} $$其中 $ R{i,t} $ 是股票 $ i $ 在交易日 $ t $ 的日收益率通常用前复权收盘价计算$ \text{DollarVolume}_{i,t} $ 是当日成交金额单位万元。该指标物理含义清晰单位成交金额引发的绝对收益率越大说明市场对该股定价越不充分信息不对称程度越高。注意A股早期1991–1996成交金额数据极不完整上交所1990年12月开市深交所1991年7月开市但系统性电子化记录始于1997年。因此实际可用区间建议设为1997年1月–2022年12月并在论文中明确标注数据可得性断点。2.2 Pastor–Stambaugh流动性比率捕捉流动性风险溢价的跨期波动Pastor Stambaugh (2003) 构造的流动性Beta本质是股票收益对市场整体流动性冲击的敏感度$$ \text{LiquidityBeta}i \text{Cov}(R{i,t}, \Delta\text{ILLIQ}_t) / \text{Var}(\Delta\text{ILLIQ}_t) $$其中 $ \Delta\text{ILLIQ}_t $ 是全市场股票ILLIQ序列的日度变化中位数。该指标反映个股是否在市场流动性收紧时更易被抛售间接体现信息优势方的择时能力。计算需全市场截面数据对样本覆盖度要求极高。2.3 收益率反转指标识别信息驱动型短期动量/反转信息不对称常表现为“坏消息滞后反应”——知情交易者先行交易不知情者随后跟风导致股价在事件后数日出现显著反转。常用代理是$$ \text{Rev}{i,t} R{i,t-1} - \text{Median}(R_{j,t-1} \mid j \in \text{SameIndustry}) $$即个股昨日收益率减去同行业其他股票昨日收益率中位数。该指标需行业分类推荐使用申万一级行业2021版且对停牌股票需特殊处理如用前一交易日收益率替代。2.1.1 为什么ASY必须组合使用单指标失效的典型场景场景ILLIQ单独失效原因组合修正方式ST股/退市预警股成交额骤降导致ILLIQ虚高但并非信息不对称而是流动性枯竭引入Pastor Beta过滤若LiquidityBeta显著为正且ILLIQ95分位数则标记为“异常流动性陷阱”剔除或缩尾新股上市首月高换手率伴随高ILLIQ实为制度性供给约束而非信息优势加入“上市天数60”虚拟变量交互项或直接剔除上市60日内样本融资融券标的股做空机制降低信息不对称但ILLIQ可能因融券卖出放大在回归中控制“是否两融标的”哑变量或使用融券余额/融资余额比作为调节变量3. 用Python从原始行情数据生成ASY指标从CSMAR/Wind导出到日频ILLIQ序列的最小可行代码本节提供可直接运行的Python脚本框架基于真实A股数据结构以CSMAR为例字段名适配Wind可自行替换。关键在于数据清洗顺序不可逆先处理停牌与ST标识再计算收益率最后统一度量单位。所有步骤均附参数说明与常见报错应对。3.1 数据准备必需字段与清洗逻辑从CSMAR下载原始数据表StockDailyReturnStockTrade确保包含以下字段Stkcd: 股票代码6位数字字符串Trddt: 交易日期YYYYMMDD格式Dnvaltrd: 日成交金额万元Clsprc: 收盘价前复权Dsmvttl: 总市值万元Stknme: 股票简称用于识别ST/*STDretnd: 日收益率已计算好但需校验提示CSMAR中Dnvaltrd单位为“万元”而Amihud原始论文要求美元成交额A股直接使用万元单位即可但需在论文方法部分注明“单位统一为人民币万元”避免审稿人质疑量纲。3.2 核心计算函数ILLIQ日度序列生成import pandas as pd import numpy as np from datetime import datetime def calculate_illiq(df: pd.DataFrame) - pd.DataFrame: 计算Amihud非流动性比率 ILLIQ |R| / DollarVolume 输入df需含Stkcd, Trddt, Clsprc, Dnvaltrd, Dretnd 输出新增列ILLIQ, valid_flag标识是否有效计算 # 步骤1剔除ST/*ST及暂停上市股票 df[is_st] df[Stknme].str.contains(r(ST|\*ST), naFalse) df df[~df[is_st]].copy() # 步骤2过滤成交金额为0或缺失的记录常见于新股首日无成交额 df df.dropna(subset[Dnvaltrd, Dretnd]) df df[df[Dnvaltrd] 0] # 步骤3收益率取绝对值成交额单位保持万元无需转换 df[abs_ret] df[Dretnd].abs() df[ILLIQ] df[abs_ret] / df[Dnvaltrd] # 步骤4缩尾处理Winsorize——消除极端值干扰 # 按股票-年度分组对ILLIQ做1%缩尾非全样本缩尾 df[year] pd.to_datetime(df[Trddt], format%Y%m%d).dt.year def winsorize_group(x): x[ILLIQ] x[ILLIQ].clip(lowerx[ILLIQ].quantile(0.01), upperx[ILLIQ].quantile(0.99)) return x df df.groupby([Stkcd, year]).apply(winsorize_group).reset_index(dropTrue) # 步骤5标记有效样本ILLIQ 0 且非无穷大 df[valid_flag] ((df[ILLIQ] 0) (df[ILLIQ] np.inf) (~df[ILLIQ].isna())) return df # 示例调用 raw_data pd.read_csv(csamar_stock_daily_1997_2022.csv, dtype{Stkcd: str, Trddt: str}) illiq_df calculate_illiq(raw_data) print(f原始记录数{len(raw_data)} → 有效ILLIQ记录数{illiq_df[valid_flag].sum()})3.2.1 关键参数说明与调试指南Dnvaltrd 0过滤A股存在“零成交额但有收盘价”的情况如B股、部分债券必须剔除否则ILLIQ为无穷大year分组缩尾若对全样本缩尾会导致小盘股ILLIQ被大盘股分布主导违背“个股流动性应独立评估”原则valid_flag设计后续做面板回归时必须用此标志筛选样本避免将NaN或Inf带入模型常见报错ZeroDivisionError源于Dnvaltrd含负值CSMAR偶有录入错误加df df[df[Dnvaltrd] 0]前置过滤即可解决。3.3 构建多维度ASY复合指标ILLIQ LiquidityBeta Rev的整合框架def build_asy_composite(df_illiq: pd.DataFrame) - pd.DataFrame: 整合三类指标生成最终ASY变量 返回df含Stkcd, Trddt, ILLIQ, LiquidityBeta, Rev, ASY_Composite # 步骤1计算市场层面ΔILLIQ全市场ILLIQ日度变化中位数 market_illiq df_illiq.groupby(Trddt)[ILLIQ].median().rename(Mkt_ILLIQ) df_illiq df_illiq.merge(market_illiq, onTrddt, howleft) df_illiq[Delta_ILLIQ] df_illiq[ILLIQ] - df_illiq[Mkt_ILLIQ] # 步骤2计算Pastor Beta滚动60日窗口需保证至少30个有效日 def calc_beta(group): if len(group) 30: return np.nan cov np.cov(group[Dretnd], group[Delta_ILLIQ], ddof1)[0,1] var np.var(group[Delta_ILLIQ], ddof1) return cov / var if var ! 0 else np.nan df_illiq[LiquidityBeta] df_illiq.groupby(Stkcd).apply( lambda x: x.sort_values(Trddt)[Dretnd].rolling(60).apply( lambda y: calc_beta(x.iloc[y.index]) ) ).reset_index(level0, dropTrue) # 步骤3计算收益率反转Rev同行业比较 # 假设已有industry_map: {Stkcd: industry_code} industry_map load_industry_mapping() # 自行实现推荐申万2021一级行业 df_illiq[industry] df_illiq[Stkcd].map(industry_map) df_illiq[Rev] df_illiq.groupby([Trddt, industry])[Dretnd].transform( lambda x: x - x.median() ) # 步骤4合成ASY_Composite标准化后等权 for col in [ILLIQ, LiquidityBeta, Rev]: df_illiq[f{col}_zscore] df_illiq.groupby(Trddt)[col].transform( lambda x: (x - x.mean()) / x.std(ddof1) if x.std(ddof1) ! 0 else 0 ) df_illiq[ASY_Composite] ( df_illiq[ILLIQ_zscore] df_illiq[LiquidityBeta_zscore] df_illiq[Rev_zscore] ) / 3 return df_illiq # 输出最终结果按研究需求保存 final_asy build_asy_composite(illiq_df) final_asy.to_parquet(asy_composite_1997_2022.parquet, indexFalse)3.3.1 行业映射与滚动窗口的实操细节industry_map获取CSMAR提供IndustryClass表字段Indcd对应申万行业代码需匹配最新版2021版共31个一级行业rolling(60)窗口60交易日≈3个月符合Pastor原论文设定若某股连续停牌超30日则该窗口内Beta为空不影响其他时段zscore标准化必须按交易日截面标准化groupby(Trddt)确保每日指标均值为0、标准差为1避免时间序列趋势干扰。4. 处理1991–2022年数据断点的三大实操方案从缺失填补到制度变迁校正1991–2022年跨度32年A股经历了交易所成立、股权分置改革、创业板开板、注册制试点等重大制度变迁直接拼接ILLIQ序列会产生系统性偏差。不能简单用“线性插值”或“均值填充”必须按阶段采取针对性处理。4.1 1991–1996年用“可得性替代法”构建准代理变量该阶段原始成交金额缺失率超80%但上交所《证券市场年鉴》记载了年度总成交额与上市公司家数。可行方案计算年度市场ILLIQ均值$ \text{ILLIQ}{\text{market},y} \frac{\sum_i |R{i,y}|}{\text{TotalDollarVolume}y} $其中 $ R{i,y} $ 用年度涨跌幅近似CSMAR提供YearlyReturn表对个股赋予该年度市场均值同时添加data_quality_flag0低质量在回归中加入data_quality_flag交互项检验低质量样本是否系统性偏离。4.2 1997–2005年股权分置改革前的流通股校正2006年前非流通股占比高成交额仅反映流通部分但ILLIQ分母应为“可交易市值”。校正公式$$ \text{Adjusted_DollarVolume}{i,t} \text{Dnvaltrd}{i,t} \times \frac{\text{TotalMarketCap}{i,t}}{\text{CirculatingMarketCap}{i,t}} $$其中CirculatingMarketCap可从CSMARStockSummary表获取字段CircumValueTotalMarketCap用Dsmvttl。此校正使ILLIQ更真实反映全市场信息环境。4.3 2013年后融资融券与科创板做市商的双重影响融资融券标的扩容2013年3月起两融标的从278只扩至1000只做空机制降低信息不对称ILLIQ应系统性下降。建议在回归中加入is_margin_trading哑变量1是两融标的0否科创板做市商制度2022年10月起科创板股票引入做市商报价流动性提升但价格发现效率变化复杂。稳妥做法是将2022年10月后科创板样本单独分组报告异质性结果。4.1.1 断点检验的Stata命令模板供实证复现* 检验股权分置改革断点2006年股权分置改革完成 gen post_reform (year 2006) gen illiq_post ILLIQ * post_reform reg ASY_Composite i.post_reform c.illiq_post i.size i.roa, r est store reform_test * 检验科创板做市商断点2022年10月 gen post_kcb (year 2022 month 10) (market KCB) reg ASY_Composite i.post_kcb c.ILLIQ##i.post_kcb i.size, r提示所有断点检验必须报告F统计量与p值若post_xxx系数显著为负说明该制度降低了信息不对称支持理论预期。5. 验证ASY指标有效性的三个硬核方法从描述性统计到资产定价检验生成ASY数据后不能直接用于回归必须通过三重验证确认其捕捉的是“信息不对称”而非“噪声”或“其他混杂因素”。这是期刊拒稿的高发区也是风控模型上线前的必过关卡。5.1 描述性统计检查指标分布是否符合理论预期信息不对称程度应呈现右偏分布多数股票较低少数股票极高且与公司特征强相关。执行以下检验summarize ASY_Composite, detail观察skewness 2右偏、p95/p5 10极值存在correlate ASY_Composite size roa age预期size市值与ASY显著负相关大盘股信息更透明roa资产收益率与ASY负相关盈利稳定公司信息更可预测age上市年限与ASY负相关老公司信息披露更规范。5.2 横截面回归复现经典文献的基准结果将ASY作为解释变量检验其对下一期股票收益的预测能力信息不对称越高预期收益越高以补偿信息风险# Python statsmodels示例 import statsmodels.api as sm X final_asy[[ASY_Composite, size, bm, turnover, volatility]] X sm.add_constant(X) # 加入截距项 y final_asy[next_month_return] # 下月收益率 model sm.OLS(y, X).fit(cov_typeHC1) # 聚类稳健标准误 print(model.summary())合格标准ASY_Composite系数显著为正t值2.0且加入控制变量后仍稳健若符号为负说明指标构造存在方向性错误如收益率未取绝对值。5.3 事件研究法检验重大信息披露事件前后的ASY跃迁选取2010–2022年全部年报披露日每年4月30日前构造事件窗[-5, 5]日计算每只股票在事件窗内ILLIQ均值减去基准窗[-120, -11]日均值$$ \Delta\text{ILLIQ}{i,t} \text{mean}(ILLIQ{i,t-5:t5}) - \text{mean}(ILLIQ_{i,t-120:t-11}) $$理论预期年报披露后信息不对称下降ΔILLIQ应显著小于0。使用双重差分DID框架处理组当年披露年报的股票对照组同行业、同市值分组的未披露股票回归ΔILLIQ ~ treatment controlstreatment系数显著为负即验证成功。关键技巧年报披露日需从CSMARCorpAnnounce表提取字段AnnDt公告日期避免使用“财报截止日”实际披露常延迟。若用Wind对应字段为report_date。本文还有配套的精品资源点击获取