3 分钟快速生成代码
输入想法,AI 即刻生成可运行代码
在 JoinQuant 聚宽量化平台中,使用 get_factor_values 函数获取的因子值,绝大部分是未经过数据处理的原始值。
根据聚宽官方 API 文档的说明:
size, beta, momentum 等),由于其定义本身就包含了标准化、正交化等处理步骤,因此获取到的是处理后的值。但是,计算这些风格因子所依赖的描述因子(如 daily_standard_deviation 等),获取到的依然是原始值。如果您需要对获取到的原始因子值进行去极值、标准化或中性化处理,聚宽提供了专门的数据处理函数,您可以直接调用:
可以使用 winsorize 或 winsorize_med(中位数去极值)函数:
from jqfactor import get_factor_values, winsorize
# 获取原始因子值
factor_data = get_factor_values(securities=['000001.XSHE', '000002.XSHE'], factors=['pb_ratio'], start_date='2023-01-01', end_date='2023-01-01')
df = factor_data['pb_ratio']
# 对因子值进行去极值处理(例如:将 5% 和 95% 分位数之外的值替换为边界值)
processed_df = winsorize(df, qrange=[0.05, 0.95], axis=1)
可以使用 standardlize 函数(Z-score 标准化):
from jqfactor import standardlize
# 对去极值后的数据进行标准化
standardized_df = standardlize(processed_df, axis=1)
可以使用 neutralize 函数,剔除行业和市值等因素的影响:
from jqfactor import neutralize
# 对标准化后的数据进行行业和市值中性化
# 注意:中性化需要指定具体的日期
neutralized_df = neutralize(standardized_df, how=['jq_l1', 'market_cap'], date='2023-01-01', axis=1)
总结:为了保证数据的灵活性,get_factor_values 默认提供原始计算结果。在构建多因子模型时,建议您根据自己的研究需求,使用上述内置函数对原始因子值进行标准的预处理流程(去极值 -> 标准化 -> 中性化)。