3 分钟快速生成代码
输入想法,AI 即刻生成可运行代码
在量化投资中,单一维度的因子容易在特定市场周期中失效。通过融合基本面(价值/成长)、资金流(筹码面)、行业板块(结构面)和涨停基因(动量面),构建多因子共振策略,能显著提升策略的超额收益与稳定性。本文将详细介绍如何在聚宽(JoinQuant)平台上实现这一复杂系统,并结合平台特有的API进行风控与性能优化。
利用聚宽因子库或财务数据API获取高质成长股。例如,使用 roe_ttm(权益回报率)和 operating_revenue_growth_rate(营业收入增长率)。
get_factor_values 或在自定义 Factor 类中定义 dependencies。资金流向是短期价格波动的核心驱动力。通过监控主力资金净流入占比,筛选筹码集中的标的。
get_money_flow API 获取 net_pct_main(主力净占比)。避免策略过度集中于单一行业,导致行业系统性风险。
get_industry 获取股票所属行业,或在组合优化中使用 IndustryConstraint 进行权重限制。涨停基因通常表现为历史涨停频次、触及涨停的敏感度。在聚宽中,可以通过 get_current_data 实时监控当日是否触及 high_limit(涨停价),或通过历史日线数据计算个股的短期动量。
传统的等权重或线性加权容易忽略因子间的协方差。聚宽提供了强大的 portfolio_optimizer 接口,支持在多种约束条件下进行权重优化。
from jqlib.optimizer import *
# 示例:在月度调仓时使用优化器分配权重
optimized_weight = portfolio_optimizer(
date=context.previous_date,
securities=g.buy_list,
target=MaxSharpeRatio(rf=0.02, count=250), # 目标:最大化夏普比率
constraints=[
WeightConstraint(low=0.9, high=1.0), # 组合总权重控制在90%~100%
MarketConstraint('stock', low=0.0, high=0.9), # 股票总权重上限90%
IndustryConstraint('HY007', low=0.0, high=0.15) # 限制单一行业(如金融)权重不超过15%
],
bounds=[Bound(0.0, 0.1)], # 单只股票限仓10%以内
return_none_if_fail=True
)
当大盘处于系统性下跌周期时,多因子策略往往难以幸免。可以通过监控基准指数(如沪深300 000300.XSHG)的均线系统进行择时避险:
利用聚宽的 StopMarketOrderStyle(停止市价单)或 StopLimitOrderStyle(停止限价单)进行个股止损,防止黑天鹅事件。
MarketOrderStyle(limit_price)。# 动态止损示例:在 handle_data 中监控持仓
for security in list(context.portfolio.positions.keys()):
position = context.portfolio.positions[security]
current_price = data[security].close
# 若当前价格低于持仓均价的 8%,执行止损
if current_price < position.avg_cost * 0.92:
order_target(security, 0)
log.info(f"触发止损,卖出 {security}")
在聚宽模拟盘或高频回测中,内存超限(OOM)和进程重启是常见痛点。必须合理利用平台的缓存与初始化机制:
强烈建议在 initialize 中开启 set_option('use_real_price', True)。这能有效避免前复权带来的未来函数,确保回测与模拟盘撮合逻辑一致。
history 等 API 获取的价格是基于当天日期的前复权价格,切勿跨日期缓存这些 API 返回的结果。initialize 中调用 disable_cache() 关闭缓存机制。pickle 保存全局变量 g。不能被序列化的对象(如数据库连接 query、打开的文件、网络连接等)千万不要存入 g。应在 process_initialize 中进行初始化,并以双下划线开头(如 g.__query),系统在序列化时会自动忽略。def process_initialize(context):
# 每次进程重启时初始化无法序列化的 query 对象
g.__q = query(valuation).filter(valuation.pe_ratio < 20)
通过上述多维因子的科学融合、组合优化器的权重分配、严格的择时止损风控以及底层的性能优化,您可以在聚宽平台上构建出一套高稳定性、高超额收益的多因子共振量化交易系统。