3 分钟快速生成代码
输入想法,AI 即刻生成可运行代码
在 JoinQuant 的策略环境中,完全可以直接调用聚宽因子库中已经提供好的因子,而不需要你自己去额外定义 Class。
你只需要使用 jqfactor 模块中的 get_factor_values 函数,并在 factors 参数中传入你想要获取的**因子名称(字符串格式)**即可。
get_factor_values 函数说明get_factor_values(securities, factors, start_date=None, end_date=None, count=None)
get_all_factors() 查看。count 参数二选一。end_date 之前交易日的数量(含 end_date 当日),与 start_date 参数二选一。下面是一个在策略环境中直接调用聚宽因子库因子(例如:Skewness60 和 net_profit_ratio)的完整示例:
# 导入聚宽函数库
import jqdata
# 导入获取因子的函数
from jqfactor import get_factor_values
def initialize(context):
# 设定沪深300作为基准
set_benchmark('000300.XSHG')
# 开启动态复权模式(真实价格)
set_option('use_real_price', True)
# 设定要操作的股票池,这里以平安银行和万科A为例
g.stocks = ['000001.XSHE', '000002.XSHE']
# 每天开盘前运行
run_daily(before_market_open, time='09:00')
def before_market_open(context):
# 获取前一个交易日的日期
yesterday = context.previous_date
# 我们想要获取的因子列表(直接使用聚宽因子库中的因子名称字符串)
# Skewness60: 个股收益的60日偏度 (风险因子)
# net_profit_ratio: 销售净利率 (质量因子)
factor_list = ['Skewness60', 'net_profit_ratio']
# 调用 get_factor_values 获取因子值
# 注意:为了避免未来函数,end_date 使用前一个交易日 (yesterday)
factor_data = get_factor_values(securities=g.stocks,
factors=factor_list,
end_date=yesterday,
count=1)
# factor_data 是一个字典,key 是因子名称,value 是 pandas.DataFrame
# 查看 Skewness60 因子值
skewness_df = factor_data['Skewness60']
log.info("\n=== Skewness60 因子值 ===\n%s" % skewness_df)
# 查看 net_profit_ratio 因子值
net_profit_df = factor_data['net_profit_ratio']
log.info("\n=== net_profit_ratio 因子值 ===\n%s" % net_profit_df)
# 你可以根据获取到的因子值进行后续的选股或调仓逻辑
# 例如:获取平安银行昨天的销售净利率
# pa_net_profit = net_profit_df['000001.XSHE'].iloc[0]
# log.info("平安银行销售净利率: %s" % pa_net_profit)
end_date 最好传入 context.previous_date,以获取前一个交易日的因子值,避免使用当天的未知数据。