3 分钟快速生成代码
输入想法,AI 即刻生成可运行代码
在 JoinQuant(聚宽)的研究环境中,是可以进行单因子分析的,但您需要使用的是聚宽官方内置的 jqfactor 模块,而不是外部开源的 jqfactor_analyzer 库。
jqfactor_analyzer?jqfactor_analyzer 通常指的是聚宽之前开源在 GitHub 上的单因子分析工具包(类似于 Alphalens)。但在聚宽官方的线上研究环境中,官方已经将其深度集成并优化为内置的 jqfactor 模块。
使用内置 jqfactor 的优势在于:
get_factor_values)完美兼容。jqfactor 进行因子分析?在研究环境中,您可以通过引入 jqfactor 库中的 analyze_factor 函数来便捷地进行单因子分析。以下是两种常见的使用场景示例:
如果您想分析聚宽因子库中现成的因子(例如:60日偏度 Skewness60),可以直接获取因子值并传入分析函数:
# 导入需要的数据库
from jqfactor import analyze_factor
from jqfactor import get_factor_values
from jqdata import get_index_stocks
# 1. 获取因子值 (pandas.DataFrame 格式)
factor_data = get_factor_values(
securities=get_index_stocks('000300.XSHG'),
factors=['Skewness60'],
start_date='2018-01-01',
end_date='2018-03-01'
)['Skewness60']
# 2. 使用获取的因子值进行单因子分析
far = analyze_factor(
factor=factor_data,
start_date='2018-01-01',
end_date='2018-03-01',
weight_method='mktcap',
industry='jq_l1',
quantiles=5,
periods=(1, 5, 20),
max_loss=0.2
)
# 3. 打印或绘制分析结果
# 获取按分位数分组加权平均因子收益
print(far.mean_return_std_by_quantile)
# 绘制全部分析图表
far.create_full_tear_sheet()
如果您自己编写了一个因子逻辑,可以通过继承 Factor 类来定义,并直接传入 analyze_factor:
# 导入需要的数据库
from jqfactor import analyze_factor
from jqfactor import Factor
# 1. 自定义因子的类 (例如:5日均线因子)
class MA5(Factor):
name = 'ma5'
max_window = 5
dependencies = ['close']
def calc(self, data):
return data['close'][-5:].mean()
# 2. 使用自定义因子的类进行单因子分析
far = analyze_factor(
factor=MA5,
start_date='2018-01-01',
end_date='2018-03-01',
weight_method='mktcap',
universe='000300.XSHG',
industry='jq_l1',
quantiles=5,
periods=(1, 5, 20)
)
# 3. 获取分析结果
# 查看月度信息系数 (IC)
print(far.ic_monthly)
# 绘制因子预测能力分析图
far.create_event_returns_tear_sheet()
您完全可以在聚宽研究环境中进行专业的单因子分析,只需将代码中的 jqfactor_analyzer 替换为官方内置的 jqfactor 模块,并使用 analyze_factor 函数即可。这不仅能满足您的需求,还能获得更好的性能和数据支持。