问题描述
解决方案
在 JoinQuant 聚宽平台上,您可以使用 get_factor_kanban_values 函数来获取因子看板上的因子回测表现数据。该函数位于 jqfactor 库中。
以下是详细的使用说明和代码示例:
核心函数
get_factor_kanban_values
代码示例
# 导入函数库
from jqfactor import get_factor_kanban_values
import pandas as pd
# 获取因子看板数据
# 示例:获取沪深300成分股中,近三个月,纯多头组合模型下的质量和基础类因子的表现
df = get_factor_kanban_values(
universe='hs300', # 股票池:沪深300
bt_cycle='month_3', # 测试周期:近三个月
model='long_only', # 组合构建模型:纯多头组合
category=['quality', 'basics'], # 因子分类:质量类和基础类
skip_paused=False, # 是否过滤涨停及停牌股
commision_slippage=0 # 手续费及滑点设置:无
)
# 打印结果的前几行
print(df.head())
# 查看具体的列名,了解包含哪些指标(如IC均值、夏普比率等)
print(df.columns)
参数说明
- universe (股票池):
'hs300': 沪深300'zz500': 中证500'zz800': 中证800'zz1000': 中证1000'zzqz': 中证全指
- bt_cycle (测试周期):
'month_3': 近三个月'year_1': 近一年'year_3': 近三年'year_10': 近十年
- model (组合构建模型):
'long_only': 纯多头组合(关注分位数收益,如一分位和五分位)'long_short': 多空组合(关注多空对冲后的收益)
- category (因子分类列表):
- 可选值:
'quality'(质量),'basics'(基础),'emotion'(情绪),'growth'(成长),'risk'(风险),'pershare'(每股),'style'(风格),'technical'(技术),'momentum'(动量)。
- 可选值:
- skip_paused:
True(过滤) 或False(不过滤)。 - commision_slippage:
0: 无1: 3‱佣金 + 1‰印花税 + 无滑点2: 3‱佣金 + 1‰印花税 + 1‰滑点
返回值说明
返回一个 pandas.DataFrame,根据 model 的不同,返回的列会有所区别:
-
当
model='long_only'(纯多头) 时,主要包含:ic_mean: IC均值ir: IR值annualized_return_1q/annualized_return_5q: 一分位/五分位年化收益率sharpe_1q/sharpe_5q: 一分位/五分位夏普比率max_drawdown_1q/max_drawdown_5q: 最大回撤turnover_ratio_1q/turnover_ratio_5q: 换手率
-
当
model='long_short'(多空) 时,主要包含:ic_mean: IC均值ir: IR值annualized_return_ls: 多空组合年化收益率sharpe_ls: 多空组合夏普比率max_drawdown_ls: 多空组合最大回撤
Q&A
Q: get_factor_kanban_values 函数返回的数据是实时的吗?
A: 不是完全实时的。数据的更新日期由 date 列标识,因子的收益需要下一交易日才可得到,因此实际数据的时间通常比 date 晚一天(T日收盘后的因子收益需要T+1的收盘价才可得出,数据需要在T+2日凌晨计算后才可得到)。
Q: 如何查看因子看板支持的所有因子分类?
A: 在调用函数时,category 参数支持的列表包括:['quality', 'basics', 'emotion', 'growth', 'risk', 'pershare', 'style', 'technical', 'momentum']。您可以根据需要传入包含这些字符串的列表。
Q: 多空组合(long_short)和纯多头组合(long_only)在返回数据上有什么主要区别?
A: long_only 模式会分别返回第一分位数(1q)和第五分位数(5q)的收益、夏普比率和回撤等数据,便于观察因子在头部和尾部的表现区分度;而 long_short 模式返回的是多空对冲(如做多五分位、做空一分位)后的组合表现数据(后缀为 _ls)。