第 07 篇
市值轮动策略 3.0
市值轮动 2.0 的再进阶,原素材是概述页(正文很短,46 行):点出六个升级方向——按分钟止损、行业/概念股选股、根据大盘调整持仓水平、获取行情、技术指标库、性能分析与归因分析,其中前三个给了具体写法/思路,后三个只列了名字。素材见 raw/collections/jq-getting-started/07-24-市值轮动策略30md.md。
这是什么
2.0 → 3.0 的演进清单。它把策略从「每天止损」推到「按分钟止损」,从「全市场选股」扩展到「行业/概念内选股」,并引入「大盘强弱决定仓位」的择时思想。原素材更像提纲:能说清方向,但只对三个主题给了实现细节。
核心要点
分钟级止损
- 动机:止损要更及时 → 从每天判断变成每分钟判断。
- 之前止损和交易都放在 daily(按天运行);现在要「交易按天、止损按分钟」两种节奏 → 把止损单独抽成一个函数,用
run_daily挂到 initialize 里以分钟周期运行。 - run_daily 第二参数(time)常用值:
'every_bar'= 按当前回测周期循环(按分钟回测即每分钟);'before_open'= raw 原话「每日开盘循环」(疑指开盘前,见待验证)。借此让不同函数跑不同周期。
行业股、概念股选股
- 之前在整个 A 股选股;想限定在某个行业/概念里选,换取数函数即可:
get_industry_stocks(行业编号):取某行业成分股。get_concept_stocks(概念编号):取某概念成分股。
- 也就是把 2.0 pick() 里的「全 A 两个指数并集」换成行业/概念成分,其余选股逻辑不变。
按大盘调整持仓水平
- 个股受市场整体好坏影响 → 大盘好时加仓、大盘差时减仓。
- 给出的大盘函数规则:沪深 300 指数 > 其 20 日均线 → 返回满仓信号;< 20 日均线 → 返回半仓信号。
- 用法方向:把「满仓/半仓」作为目标仓位乘数,传给 order_target_value 之类。
只列名字、未展开的方向
- 获取行情、技术指标库、性能分析、归因分析——标题出现,正文没有细节 → [需要验证] 见下。
机制 / 论证
- run_daily 是「节奏分离器」:一个策略可以有多个不同频率的任务。止损要快(分钟)、交易要低频(天)、选股更低频(10 天)——通过给不同函数注册不同 time 参数(every_bar / before_open / 天级计数),把三者拆开,互不阻塞。这与 2.0 的「每日止损 + 10 天轮动」是同一思路的进一步细分。
- 大盘择时的逻辑:用沪深 300 相对自身 20 日均线的位置当「市场温度计」——趋势向上满仓、向下半仓。这是一种简单的「系统择时」,用均线方向而不是预测点位决定总仓位。
- 行业/概念选股把「选股域」从市场级降到板块级:轮动逻辑不变,只是股票池的来源不同(指数 → 行业 → 概念),说明股票池来源可插拔。
可操作
- 分钟止损接入模板(逻辑):
run_daily(stop_by_minute, 'every_bar')注册到 initialize;止损函数内部每分钟检查每个持仓的price/avg_cost < 阈值→order_target(stock, 0)(阈值的写法见 2.0 篇与 jq-stop-loss-takeprofit)。 - 行业/概念选股:
get_industry_stocks('I64')、get_concept_stocks(概念代码)替换 pick() 里的指数并集即可。 - 大盘仓位控制模板(参数):取
attribute_history('000300.XSHG', 20, 'ld', ['close'])算 20 日均线,比较当前沪深 300 点位;在上方 → 满仓系数 1.0,在下方 → 半仓系数 0.5;把系数乘进单只股票的目标市值(order_target_value)。 - 参数要点:沪深 300 = 000300.XSHG;均线窗口 20 日;满/半仓两档(可扩展为连续系数)。
术语
- 分钟级止损:每分钟检查一次持仓是否触发止损线。
- run_daily time 参数:every_bar(按当前周期)/ before_open(raw 称「每日开盘循环」)等。
- get_industry_stocks / get_concept_stocks:行业 / 概念成分股。
- 大盘择时 / 满仓半仓信号:用指数与均线关系决定总仓位。
不确定 / 待验证
- 本篇 raw 极短:get_price/技术指标库/性能分析/归因分析只在开头列名,正文没有任何实现 → 这些方向的完整内容在量化课堂等后续材料里找,别以为本篇已覆盖。
'before_open'与第 5 篇run_daily(daily,'every_bar')、第 3 篇run_daily(func,'open')是同一参数系统的不同取值;raw 对 before_open 的注释是「每日开盘循环」,[需要验证] 实际语义(疑为开盘前)。本篇列举不全,完整取值以官方「定时运行」文档为准。- 大盘函数只给了「满仓/半仓」两档规则与触发条件,未给具体代码 → [需要验证] 落地写法。
- 2.0/3.0 的完整合并代码未在本教程给出(raw 只有片段),参考实现需自行按概念页拼装。
相关
- 市值轮动策略 2.0 — 2.0:模块化与均衡资金
- 简单市值轮动策略 — 1.0 基础
- run_daily 与任务节奏控制(定时任务) — 多节奏任务与 time 参数
- 止盈止损与持仓管理(聚宽写法) — 止损写法
- 聚宽新手入门教程(JoinQuant 平台实操) — 本教程总览
更新 2026-09-06