3 分钟快速生成代码
输入想法,AI 即刻生成可运行代码
在 JoinQuant(聚宽)平台中,计算和分析因子换手率主要依赖于 jqfactor 库中的单因子分析功能。因子换手率是衡量因子稳定性和预估交易成本的重要指标。
以下是关于如何计算和分析因子换手率的详细说明及代码示例。
jqfactor 进行分析主要步骤如下:
get_factor_values 获取因子值,或者自定义因子计算。analyze_factor 函数进行全方位的回测分析。far)的方法来展示换手率。以下代码展示了如何获取“流通市值”因子,并分析其换手率和自相关性。
# -*- coding: utf-8 -*-
import pandas as pd
from jqfactor import get_factor_values, analyze_factor
# 1. 设置参数
factor_name = 'circulating_market_cap' # 使用流通市值因子作为示例
start_date = '2023-01-01'
end_date = '2023-06-01'
universe = '000300.XSHG' # 股票池:沪深300
# 2. 获取因子数据
# 注意:这里直接获取聚宽因子库的数据。如果是自定义因子,可以传入自定义的DataFrame
factor_data = get_factor_values(
securities=get_index_stocks(universe, date=end_date),
factors=[factor_name],
start_date=start_date,
end_date=end_date
)[factor_name]
# 3. 进行单因子分析
# quantiles=5 表示分为5组
# periods=(1, 5, 10) 表示分析持有1天、5天、10天的表现
far = analyze_factor(
factor=factor_data,
start_date=start_date,
end_date=end_date,
weight_method='mktcap', # 加权方式:市值加权
industry='jq_l1', # 行业分类:聚宽一级行业
quantiles=5, # 分位数数量
periods=(1, 5, 10), # 调仓周期
max_loss=0.25
)
# 4. 打印换手率表
print("【因子换手率统计表】")
far.plot_turnover_table()
# 5. 绘制换手率分析图表 (包含自相关性、换手率等)
# 在研究环境中运行此行代码会直接显示图表
far.create_turnover_tear_sheet()
# 6. 获取具体的换手率数据 (DataFrame格式)
# 这是一个字典,key是调仓周期(如1, 5, 10),value是DataFrame
print("\n【持有1天的各分位换手率数据前5行】")
turnover_df_1d = far.quantile_turnover[1]
print(turnover_df_1d.head())
# 7. 绘制因子自相关性图 (辅助判断稳定性)
far.plot_factor_auto_correlation()
运行上述代码后,你将看到以下几类输出,分析方法如下:
plot_turnover_table)这张表会列出不同调仓周期(如 1天、5天、10天)下的平均换手率。
create_turnover_tear_sheet)包含以下几个子图:
far.quantile_turnover)如果你需要对数据进行二次处理(例如计算换手率的标准差,或者导出到 Excel),可以直接访问 far.quantile_turnover 属性。它是一个字典,键是调仓周期,值是包含每日各分位换手率的 DataFrame。
在 JoinQuant 中分析因子换手率的核心是 analyze_factor 函数。通过它生成的分析对象,你可以轻松调用 create_turnover_tear_sheet 来可视化换手率,或者通过 quantile_turnover 属性获取原始数据进行深度加工。
Q1: 因子自相关性(Auto-Correlation)和换手率有什么关系?
A1: 它们通常呈负相关关系。因子自相关性越高,说明因子值在时间序列上变化越缓慢,今天的因子值和昨天的因子值很像,因此选出来的股票池变化较小,导致换手率较低。反之,自相关性低意味着因子波动大,换手率高。
Q2: 如果发现因子换手率过高,有什么办法降低?
A2: 可以尝试以下方法:
MA(factor, 5)),减少噪音。Q3: analyze_factor 中的 weight_method 参数会影响换手率计算吗?
A3: 不会直接影响“股票进出”的比例计算(这是基于持仓数量的),但它会影响因子收益(IC、Alpha)的计算。换手率主要取决于因子值的排序变化和分位数的划分。