问题描述
聚宽在哪可以找到单因子分析功能?
我想找到聚宽哪里可以实现单因子女分析的环境,目前只找到回测的环境,不知道因子分析在哪里可以操作?
解决方案
在 JoinQuant(聚宽)平台上,单因子分析功能是在「研究环境」(即 Jupyter Notebook 环境)中进行操作的,而不是在回测环境中。
回测环境主要用于策略的逻辑验证和历史收益回测,而因子分析通常需要大量的交互式数据探索、统计计算以及丰富的图表展示,因此聚宽将专业的单因子分析工具集成在了研究环境中。
以下是详细的操作指南和代码示例:
1. 如何进入研究环境
登录聚宽官网后,在顶部导航栏找到并点击**「投资研究」或「研究」**。在这里你可以创建一个新的 Python Notebook(通常是 Python 3),在这个交互式环境中,你就可以调用聚宽的因子分析 API 了。
2. 核心分析工具:analyze_factor
聚宽提供了 jqfactor 模块,其中的 analyze_factor 函数是进行单因子分析的核心工具。它可以帮你计算因子的 IC 值、分位数收益、换手率,并生成详细的分析图表(Tear Sheet)。
3. 单因子分析代码示例
在研究环境的 Notebook 单元格中,你可以通过以下两种方式进行因子分析:
方式一:使用聚宽因子库中的已有因子
如果你想分析聚宽因子库中已经计算好的因子(例如 60日偏度 Skewness60),可以直接获取因子值并传入分析函数:
# 导入需要的库
from jqfactor import analyze_factor, get_factor_values
from jqdata import get_index_stocks
# 1. 获取沪深300成分股的因子值 (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, # 分成5个分位数
periods=(1, 5, 20), # 调仓周期:1天、5天、20天
max_loss=0.2
)
# 3. 生成全部分析图表
far.create_full_tear_sheet(demeaned=False, group_adjust=False)
方式二:自定义因子进行分析
如果你有自己的因子逻辑,可以继承 Factor 类来定义因子,然后直接将该类传给 analyze_factor:
from jqfactor import analyze_factor, Factor
# 1. 自定义因子类:例如 5日均线因子
class MA5(Factor):
name = 'ma5'
max_window = 5
dependencies = ['close']
def calc(self, data):
# 计算过去5天的收盘价均值
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', # 股票池为沪深300
industry='jq_l1',
quantiles=5,
periods=(1, 5, 22)
)
# 3. 打印月度 IC 表格
print(far.ic_monthly)
# 4. 绘制各分位数收益图
far.plot_quantile_returns_bar()
4. 因子分析结果包含哪些内容?
通过 far 对象(FactorAnalyzer 实例),你可以调用多种方法来展示分析结果:
- 收益分析:
far.plot_quantile_returns_bar()(各分位数收益)、far.plot_cumulative_returns_by_quantile()(累积收益)。 - IC 分析:
far.plot_ic_ts()(IC时间序列)、far.plot_monthly_ic_heatmap()(月度IC热力图)。 - 换手率分析:
far.plot_turnover_table()(换手率统计)。 - 一键生成报告:
far.create_full_tear_sheet()会自动输出包含收益、IC、换手率等所有维度的综合图表报告。
总结:请前往聚宽的**「投资研究」**模块,新建一个 Notebook,导入 jqfactor 库,即可开启强大的单因子分析之旅。