3 分钟快速生成代码
输入想法,AI 即刻生成可运行代码
您好!在 JoinQuant 平台中,直接获取的 Barra size 因子与您手动下载市值取对数并做常规去极值、标准化处理后存在差异,主要是因为 JoinQuant 对 Barra 风格因子的底层数据处理逻辑比常规的截面处理更为复杂。具体差异体现在以下几个核心处理步骤:
常规的标准化(Z-score)通常是减去算术平均值并除以标准差。但在 JoinQuant 的 Barra 因子计算中,标准化是采用“市值加权”的。
x = (x - mean(x)) / std(x)mean(x) 是使用股票的市值加权均值,而不是简单的算术平均值;而标准差 std(x) 依然是正常标准差。如果您手动计算时使用的是算术平均值,这会导致所有股票的因子暴露度发生整体偏移,趋势也会有所不同。JoinQuant 对描述因子和风格因子进行的去极值处理有严格的参数设定:
在计算 Barra 因子时,JoinQuant 会对缺失值进行特殊处理:
根据 JoinQuant 的 Barra 因子构建说明,数据处理经历了多重步骤:
natural_log_of_market_cap)进行去极值和市值加权标准化。以 000001.XSHE 为例,由于平安银行属于超大市值股票,在“市值加权均值”的计算逻辑下,大盘股对均值的拉动作用极大。手动算术平均算出的均值偏小,会导致平安银行的手动标准化得分偏高;而市值加权均值较大,平安银行在 Barra 模型中的实际标准化得分会被拉低。
如果您希望手动复现 JoinQuant 的 Barra Size 因子,请严格按照以下步骤编写代码:
market_cap,取自然对数。sum(log_cap * cap) / sum(cap))。