3 分钟快速生成代码
输入想法,AI 即刻生成可运行代码
在量化多因子选股模型中,绝大多数情况下应该对“横截面(Cross-Section)”进行标准化,而不是时间序列。
你发现两者对分析结果影响巨大是非常正常的,因为它们背后的金融逻辑和数学意义完全不同。以下是深度的对比解析:
横截面标准化是指在同一个时间点(例如某一天),将所有股票的该因子值进行标准化(通常是 Z-score 标准化,即减去均值除以标准差)。
时间序列标准化是指对同一只股票在不同时间点的历史因子值进行标准化。
在 JoinQuant 平台中,官方提供的 standardlize 函数默认就是针对横截面进行处理的。假设你传入的 DataFrame 行(index)是日期,列(columns)是股票代码:
import pandas as pd
import numpy as np
from jqfactor import standardlize
# 假设 data 是一个 DataFrame,index 为日期,columns 为股票代码
# axis=1 表示对每一行(即每一天的横截面所有股票)进行标准化
standardized_data = standardlize(data, inf2nan=True, axis=1)
如果你在做多因子选股(Alpha策略),请务必坚持使用横截面标准化(配合横截面去极值、横截面行业/市值中性化)。只有这样,你的因子值才能真实反映出股票在截面上的相对投资价值,从而保证因子IC分析、分层回测结果的有效性和逻辑自洽。