worklog

2026-02-19(一):策略逻辑整理

把交易策略的完整逻辑梳理成文档。这份文档基于 策略Opus4.6.docx(代码逻辑版本),已确认采用。


一、策略一句话概括

“左侧抄底冰点,右侧追首阴”——在市场极度恐慌时无脑抄底并死扛至过热;在趋势良好时,利用连涨后的首次回调做短线波段。


二、六个核心指标

指标 变量名 定义 关键阈值
市场广度 breadth 中证500成分股中站上20日均线的个股比例(%) 冰点 <16%,过热 >79%
资金热度 heat_z 中证500指数成交额的20日 Z-Score 过热 >1.5σ
趋势防守线 ma_30 30日均线(MA_Filter) 多空分界线
短期趋势线 ma_10 10日均线(MA_Trend) FirstNeg 入场条件
近期支撑线 ma_5 5日均线(MA_Support) FirstNeg 入场条件
连涨动能 consec_gains 连续上涨天数 >=3 天为强劲

关于 heat_z 的通俗解释

Z-Score 是”和过去比,今天有多反常”。举两个例子:

只有”相对于过去的正常波动来说,今天的成交额异常偏高”,Z-Score 才会突破 1.5,被判定为资金过热。

连涨天数的计算方式

用”涨跌方向切换分组”:每次涨跌方向变化时新开一组,组内累计天数就是连涨/连跌天数。

df['is_up'] = (df['close'] > df['close'].shift(1)).astype(int)
df['streak_group'] = (df['is_up'] != df['is_up'].shift(1)).cumsum()
df['streak'] = df.groupby('streak_group').cumcount() + 1
df['consec_gains'] = np.where(df['is_up'] == 1, df['streak'], 0)

三、买入逻辑

策略每天收盘后检查是否触发买入,分两种场景(Composite 优先判断):

场景 A:左侧极值抄底(Composite 模式)

触发条件:市场广度 < 16%

就这一个条件。全市场不到 16% 的股票站在均线上方,属于极度超卖的”冰点时刻”。

动作

场景 B:右侧首阴低吸(FirstNeg 模式)

场景 A 不满足时才检查场景 B。

触发条件(6 个条件必须全部满足)

条件 含义 判断逻辑
趋势向上 大方向没问题 close > MA10
动能强劲 之前涨势够猛 昨日连涨天数 >= 3
首阴回调 今天终于跌了 今日 close < 昨日 close
放量确认 市场有人在交易 ETF 换手率 > 1.0%
支撑有效 短期均线还撑得住 close > MA5
大趋势保护 中期均线没破 close > MA30

动作:同 Composite,产生买入信号,标记为 FirstNeg。

状态升级特例

如果已经在 FirstNeg 持仓中,市场突然崩盘导致广度跌破 16%,策略会自动把状态从 FirstNeg 升级为 Composite。这样做的好处是:不再受 FirstNeg 的严格止损约束,切换到”死扛等反转”的模式。


四、卖出逻辑

通用卖出条件(两种模式共用)

广度 > 79% 且 heat_z < 1.5 → 卖出

解读:”缩量普涨”意味着市场已经涨到头了——大家都在涨但资金没跟上,见顶信号。反过来,如果 heat_z > 1.5(资金还在猛烈涌入),即使广度过热也先不卖,说明还有资金推动的空间。

Composite 模式(抄底单)

FirstNeg 模式(追涨单)

采用组合条件退出,不是三个条件任选其一:

退出 = 跌破 MA30 AND (当日下跌 OR 5日不创新高)

具体来说:

条件 代码变量 含义
前提 is_below_ma 收盘价 < MA30(趋势破位)
叠加 a is_1d 今日收盘 < 昨日收盘(当日还在跌)
叠加 b is_5d 持仓 >= 5 天,且期间收盘价从未超过 entry_high

必须先满足前提(跌破 MA30),再叠加 a 或 b 任一确认,才触发卖出。

单独跌破 MA30 不卖(可能只是暂时回踩),单独下跌也不卖(可能还在 MA30 上方)。

与原始文档的差异:原始”策略逻辑.docx”描述为三个条件纯 OR(任一满足即卖出),代码实现是以跌破 MA30 为前提的 AND 组合。我们采用代码版本。


五、关于 entry_high

与原始文档的差异:原文暗示应滚动更新为”买入后达到的最高价”,代码只记录一次。我们采用代码版本。


六、交易执行细节

项目 规则
执行模型 T+1:信号在 T 日收盘后确定,T+1 日开盘价执行
仓位 全仓进出,0 或 1,不做部分仓位
方向 纯多头,不做空
单边成本 0.1%(千分之一),含滑点和手续费

收益计算方式:


七、数据源说明

数据 来源 说明
价格(OHLCV)+ 均线 中证500指数 000905.SH 无需复权
资金热度(heat_z) 中证500指数成交额 无需复权
市场广度(breadth) 成分股个股数据 基于后复权收盘价计算 MA20
ETF 换手率(etf_turnover) 510500 ETF 仅此字段用到 ETF 数据