# MoFin 策略研究 · 状态与经验教训(2026-08-08 快照) > 本文档是后续所有策略研究工作的起点。每次开始新研究前,必须先读本文档。 > 尤其是【方法论铁律】和【反复犯的错】两节——防止重蹈覆辙。 --- ## 一、方法论铁律(老莫反复强调,违反即方向错误) ### 1.1 由果及因(逆推法)——唯一正确的研究路径 - **先找到真实大涨段(果)→ 再分析大涨段前后可识别的特征(因)→ 归纳成因子组合 → 验证** - 绝不拍脑袋定指标,再去找数据验证(那是先射箭再画靶) ### 1.2 禁止"固定"(拍脑袋)——所有固定都是错的 - ❌ 禁止固定天数("60日"、"前10日"、"前5日")——为什么是60不是50?为什么是10不是20? - ❌ 禁止固定数值("涨15%"、"RSI>70")——为什么是15不是20? - ❌ 禁止固定阈值("前10日资金流入")——前30日吸筹+后10日洗盘,前10日就是流出 - ✅ 正确:**区间/结构由数据自然定义**(swing 高低点、自然回调段),不是拍脑袋设定 ### 1.3 找"能识别的买卖点",不是完美买卖点 - 不追求吃完整段收益(1浪到5浪全吃)——那不可能 - 只要中间一段:识别出"接下来会有一波上涨"(如3浪),吃到它就成功 - 识别不了5浪顶,能在B浪顶出逃也是成功 - **波浪理论只是参考,核心是方法论** ### 1.4 买卖点必须是"结构确认点",不是单日因子 - ❌ 单日特征(当天RSI<40、当天资金流入)——**当天可能正在洗盘**,无法识别 - ✅ 结构确认:下跌段结束 + 突破前高(跌势反转确认),是相对结构不是单日绝对值 - 买点 = 一段可识别的**结构过程**,不是某一天的孤立数值 ### 1.5 禁止事后指标(用未来数据当信号) - ❌ "拉升当天资金流入"——资金不流入怎么拉升?这是拉升的结果,不是事前信号 - ❌ "未来60日涨15%"——固定期间固定数值,智障标准 - ✅ 事前指标:拉升**之前**出现的迹象(主力提前建仓、量价结构收敛) ### 1.6 从选股开始就有策略介入 - 参考 MoFin 五因子综合评分(趋势/动量/量能/波动率/风险 → 合成可排序分数) - 选股 = 多维度合成评分排序(不是单因子) - 评分用于**排序选池**,买卖点用**可识别结构状态**触发(两层分离) --- ## 二、反复犯的错(血泪教训,每次犯完老莫暴怒) 1. **拍脑袋定固定值**:60日、15%、前10日、RSI>70——反复出现 2. **单日特征识别买卖点**:当天RSI/资金流——当天可能洗盘 3. **事后指标当信号**:拉升当天资金流入 4. **先射箭再画靶**:先定规则再验证,而不是从数据归纳 5. **拿半成品问问题**:有bug先修bug,别拿一坨屎问老板怎么办 6. **用固定出场规则**(P1/P2/P3固定RSI阈值)——又是拍脑袋 7. **评估指标本身拍脑袋**:fwd_high60>=30% 是"60天内某刻摸到+30%"——路径无关 8. **反复在"换因子/调出场/改评分"打转**,无证据循环 --- ## 三、数据资产(246服务器 /tmp/ 目录) | 文件 | 内容 | 大小 | |---|---|---| | mofin_winner_panel.pkl | 全市场729万行面板(技术/资金/消息/行业/大盘因子+前向收益) | 860MB | | mofin_12d_panel.pkl | 12维全市场先验面板 | 534MB | | mofin_rel_features.pkl | 相对RSI特征(个股RSI-市场RSI、分位) | 1.07GB | | mofin_buy_sell_points.csv | 8994真实买卖点(弱市8798+牛市196) | 729KB | | mofin_swing_points.csv | 1827显著涨幅段(swing定义,含买/卖点12维特征) | 429KB | | mofin_waves.csv | 1688个波浪3浪结构 | 135KB | | mofin_bull_true_points.csv | 牛市196真实买卖点 | 12KB | ### 关键结论:相对RSI分位(个股vs市场)单独用无效 - 相对强/弱分桶右尾几乎无差异(24.5%~25.6%) - 相对分位 × 大盘状态交互:极弱市相对强反而差(-1.78pp),强势市相对强好(+0.90pp) - **相对分位不能单独用,含环境信息但需组合** --- ## 四、已验证的策略结果 ### ✅ 唯一成功:v4(弱市精选+分仓止盈) - 买入:大盘RSI<45 + 个股RSI 32-38(温和超卖)+ bias20 -0.05~-0.10 + ret1>3.7%(强启动)+ flow5>0 - 分仓止盈 P1/P2/P3(但这是固定阈值——后续要改成结构确认) - **年化13.5% / 回撤-11.5% / 胜率79% / 盈亏比3.07 / 207笔** - 注意:因子区分度只有0.5(中等),后续优化无显著提升 ### ❌ 失败的尝试(及原因) | 尝试 | 结果 | 失败原因 | |---|---|---| | 技术面单因子(RSI/bias) | 区分度弱 | 单因子无预测力 | | 资金面flow5>0 | 组合级全亏 | 资金流入是拉升结果(事后指标) | | 波浪理论识别3浪 | 真3浪仅3%,量价特征区分度0.00-0.21 | 波浪在A股兼容率低(46%),且需量价确认 | | 逆推评分(拟合权重) | 选股有效(37%vs23%)但转策略全亏 | 评估指标错配+高分桶异质混合 | | 弱市评分→固定出场 | 年化-6.5%~-14.6% | P&L拆解显示漏水点在"深回撤票" | | 相对RSI分位 | 无效 | 相对分位单独无预测力 | --- ## 五、P&L拆解关键发现(Oracle诊断+实证) 弱市评分策略 12360 笔信号拆解: - 命中率 27.1%(60日内摸到+30%) - **命中前等待>30天占85%** —— 命中太慢,资金占用 - **深回撤(<-20%)占44%,其中命中率仅6%** —— 大部分票先深跌20%+,到不了+30% - 浅回撤(-10~0%)命中率71% —— 只有浅回调的票能命中 - EV = 0.27×30% − 0.73×10.1% = +0.8%/笔(理想化,真实出场更差) **核心结论**:漏水点是"深回撤票"(44%先跌20%+)。v4之所以有效,是用"温和超卖"(RSI32-38而非深度超卖)避开了深跌票。 **但关键限制(老莫提醒)**:深回撤/浅回调是未来数据,T日无法判断。真正的挑战是:**用T日可见的结构特征,识别出"会浅回调后大涨"的票**。 --- ## 六、下一步方向(老莫确认的) ### 6.1 买点 = 结构确认点(非单日因子) - 下跌段结束 + 突破前一个swing高点(跌势反转确认) - 分析大涨段启动的"突破确认点"相对前一段下跌结构的特征(下跌幅度/时间/量能收缩) - 不是看突破当天单日,而是看突破前那一段下跌的可识别结构 ### 6.2 两层架构(对齐MoFin) - 选股层:评分(多维度合成)仅用于排序选池 - 触发层:买点/卖点用可识别结构状态触发(非分数阈值) ### 6.3 出场层(之前从未认真做过) - 从8994个真卖点反推"可识别卖点特征"(结构确认,非固定值) - 出场必须是可识别状态,不是固定止损/目标 ### 6.4 评估口径 - 不用"右尾命中率"(路径无关)做决策 - 用"按真实规则实现的净收益分布"(每笔收益、胜率、盈亏比、净成本年化) - 保留路径感知:先触+20%且未先触-10% ### 6.5 分市场建模 - 弱市(大盘RSI<45):靠超跌反弹 - 牛市(RSI>=55):靠趋势/资金/龙头 - 两市场最强因子完全不同:弱市=大盘恐慌度,牛市=个股资金流+趋势强度 - 参考MoFin"分方向独立建模"(趋势策略vs均值回复策略独立) --- ## 九、2026-08-08 晚间研究结论(Ralph Loop 全周期策略探索) ### 9.1 重大市场认知(面板实证,729万行全市场) **大盘状态与未来收益高度单调**(fwd_ret60): | 大盘状态 | 均值 | 中位 | 胜率 | |---|---:|---:|---:| | <35 极弱 | **+6.8%** | +1.8% | 54% | | 35-45 弱 | +1.0% | -2.2% | 44% | | 45-55 震荡 | +0.5% | -2.3% | 44% | | 55-65 强 | -0.2% | -2.9% | 42% | | >65 极强 | **-1.7%** | -4.4% | 39% | **核心结论:大盘越弱→未来收益越高(超跌反弹是A股主要收益来源);大盘越强→未来收益越差(追高即亏)。** - 牛市中个股位置同样单调:牛市+超跌(RSI<30) +0.4% > 牛市+极强(RSI>75) -2.4% - 分年:2017(牛市占比51%但全年-6.5%)= 结构性熊市反例;2025(牛市48%)+9.4% ### 9.2 "牛市独立策略"方向被排除(三条路全失败,用真实日期验证) | 尝试 | 面板/回测结果 | 失败原因 | |---|---|---| | 行业内RS5确认(启动后5日相对强度>0.8) | 真实日期重算 +0.8%(vs 基线+1.5%) | **pivot行位移bug假象**(+12.4%是假的) | | 牛市深回调买入(距高点-10~-25%) | -1.7%(差于基线+2.4%) | 幸存者偏差(196个成功点特征不可外推) | | 牛市强者恒强(flow5>0+创新高+ret1>2%) | +1.4%(vs 牛市基线-0.7%) | flow5分位单调性极弱(-0.3%~-0.1%) | ### 9.3 v3 验证(极弱市+深超跌+当日启动) - 面板:`mkt_rsi<35 + RSI<35 + ret1>2%` → **+7.4%/胜率59%/大涨23%** - 资金模拟(5仓等权100万):年化4.6-4.9%、回撤-28%、胜率51% —— **不及v4** - 原因:信号太稀(日均持仓仅1.3仓,极弱市时段仅占9%),资金利用率低 ### 9.4 v4 增强尝试(用大盘分层洞察优化v4) - 放宽条件(极弱市RSI<45/全超跌)→ 样本从2.4万增到55万,但均值从9.7%降到5.0-6.7% - **结论:v4的严格过滤(RSI<40+bias60<0+sec_above=False+ret1>2%+news3>=1)是alpha来源,放宽即稀释** - **v4 仍是最优策略(面板+9.7%,资金模拟年化13.5%/回撤-11.5%/胜率79%)** ### 9.5 方法论新教训(写入铁律) 1. **pivot 宽表 shift()/pct_change() 是行位移**——停牌股票会让前向收益错位,产生虚假信号。**必须用真实交易日序列/真实价格买卖验证**(v4 的 buy_sell_points 是真实价格,所以可靠) 2. **幸存者样本特征不可外推**:196个成功买卖点的平均特征(如"深回调-14.8%")做全市场规则 → 大面积误伤(-1.7%) 3. **样本内对比 ≠ 事前筛选**:8798买卖点内部"大涨vs平庸"差异显著(t=3.7-6.5),但同规则全市场筛选失效(方向甚至反转) 4. **严格过滤是alpha来源**:放宽条件增加信号量但稀释质量(v4a/v4c 证实) 5. **"分市场建模"的修正认知**:A股不是"弱市超跌+牛市追强",而是**"弱市超跌反弹(唯一alpha)+ 牛市防御(避免追高亏损)"** ### 9.6 待老莫确认的方向 - "覆盖全市场周期"的正确组合可能是:**弱市/极弱市全力v4(超跌反弹),牛市/极强市轻仓防御**,而非独立的牛市策略 - 牛市真正的机会可能在于"超跌反弹"同样适用(牛市+RSI<30 也有+0.4%),只是收益小于弱市 - 下一步可选:①v4资金模拟的出场层优化(老莫6.3方向,从未认真做)②极强市防御策略(如何避免-1.7%的追高亏损) ### 9.7 真实卖点逆推(出场层,原则文档6.3方向,2026-08-08晚执行) - 数据:8798真实买卖点(swing定义)的 sell_date 特征(真实日期,宽表只读) - **bias60 是最强出场信号**:卖出时 bias60 分位0→卖后20日+1.5%,分位3→-4.6%(分位越高越该卖) - **卖对了(卖后跌10%) vs 卖早了(卖后涨15%)** 的区分特征: | 特征 | 卖早了 | 卖对了 | t值 | |---|---|---:|---:| | bias60 | 0.252 | 0.318 | **-9.1**(卖对时远离60日线)| | bias20 | 0.159 | 0.195 | -8.3 | | 量比 | 1.375 | 1.500 | -6.6(卖对时放量)| | RSI | 75.2 | 74.0 | **+3.3(RSI区分最弱)** | | 持有天数 | 39.3 | 34.3 | +11.3 | - **结论:可识别卖点 = bias60高(远离60日线)+ 放量(高位放量滞涨)。固定RSI出场(P1/P2/P3)是最差的选择**——印证老莫"固定出场规则又是拍脑袋" ### 9.8 v5 验证:结构出场 vs 固定RSI出场(同买入信号,2026-08-08晚执行) - 买入:v4条件(mkt_rsi<45+rsi<40+bias60<0+sec_above=False+ret1>2%+news3>=1) - 出场对比: | 版本 | 交易 | 均值 | 胜率 | 年化 | 回撤 | |---|---|---:|---:|---:|---:| | v4固定RSI出场 | 548 | +2.93% | 44% | 4.7% | **-57.3%** | | v5结构出场(bias60>0.30/0.20+放量/40日) | 599 | +2.01% | 40% | **6.6%** | **-39.1%** | - **结构出场年化+40%、回撤改善18pp**——出场层方向被验证有效 - 注意:此回测 v4 止损率78%(468/599)高于此前会话验证的 v4(胜率79%),因买入条件细节(limit_up|hi20_new|ret1 三选一 vs 单独ret1)和分仓止盈计数不同。绝对年化不可跨会话直接对比,但**相对比较(结构vs固定)有效** - **待做**:出场层完整调优(bias60阈值/量比阈值/时间退出组合网格搜索)+ 与买入信号联动优化 ### 9.9 v6b 出场层网格搜索(2026-08-08晚执行,预计算路径法) - 买入固定 v4;45组网格(bias60 0.25-0.6 × 量比1.3-1.8 × 时间退出30/40/50) - **结果**: | 指标 | 最优组合(bias60>0.35+量比1.8+30日) | 基线(仅止损+40日) | |---|---|---:| | 每笔均值 | **+3.34%** | +0.03% | | 胜率 | 53% | 50% | | 盈亏比 | 1.44 | — | - **结构出场比无结构基线提升 110 倍(+0.03%→+3.34%)——出场层价值巨大** - 敏感性:时间退出30日最优(3.26%>40日3.16%>50日3.10%);量比1.8略优;bias60阈值不敏感(0.25-0.6均在3.15-3.21%)——**"有结构出场"本身是关键,阈值不敏感** - **瓶颈:买入信号质量限制上限**(27%票直接止损,胜率仅53%) ### 9.10 v4买入信号路径诊断(2026-08-08晚执行) - 6846信号:先触-15%止损27%,先触+30%止盈17%,40日未触发56%(平均最大涨幅+12.9%) - **止损 vs 止盈的入场特征几乎无差异**(除大盘RSI t=7.3)——入场时无法区分会止损/会止盈的票(印证老莫:"深回撤/浅回调是未来数据,T日无法判断") - **56%时间退出组平均最大涨幅+12.9%**——出场层的真正价值在"让时间退出组多赚"(bias60不高就不卖,利润奔跑),不在"减少止损" ## 七、实盘数据累积(已部署) - `live_data_collector.py`:每日15:05(交易日)自动累积热点行业/资金流/个股快照 - 输出:`/home/hmo/MoFin/data/live_data/YYYY-MM-DD.json` - 目的:龙虎榜等历史无法回补的数据,从当前开始累积,定时回测调整 --- ## 八、工程注意 - MoFin venv 无 scipy → 用 rank().corr() 或手动t检验 - sector_index_daily 有脏数据(close=0十倍跳变)→ 用 rolling 中位数清洗 - 板块名映射:262精确+34手动(芯片→半导体系列) - 资金管理模拟:买入前检查现金,避免负现金 --- ## 九(续)、2026-08-08 深夜突破:买点 = 拉升前"那一段时期"的超跌特征 > 老莫反复纠正:买卖点不是某一天,是**那一段时期**。此前的错误全是"单日快照"。 ### 9.11 买点时期特征逆推(正确方法:时期维度) - 果:1827个swing显著拉升段(真实买卖点,非抽样) - 因:**buy_date 前20个交易日的时期特征**(不是buy_date当天) - **拉升段 vs 同期未拉升(3.8万对照)的时期特征差异**: | 特征 | 拉升段 | 未拉升 | t值 | |---|---|---:|---:| | 期末bias20 | -0.035 | +0.002 | **-12.2**(拉升前在MA20下方)| | 期末距高点 | -0.119 | -0.075 | **-18.6**(拉升前距高点更远)| | 时期振幅 | 0.337 | 0.227 | +6.4(拉升前波动更大)| | 下跌形态占比 | 42% | 31% | —(拉升前更多是下跌段)| - **画像:拉升前那段时期 = 下跌+超跌+MA20下方+距高点远+大波动**(t=6~18,极强) ### 9.12 超跌时期买点事前验证(真实日期,318万样本) - 规则:bias20<0 + 距60日高点<-10% + ret20<0(当时可见) - **结果:超跌 fwd40 +4.4%(胜率50%)vs 趋势中 -0.6% vs 基线 +2.4%** - 深度单调:距高点-40%以下 **+48.8%**(极端超跌) - **牛市/弱市同一买点**:超跌+弱市 +3.8%、超跌+牛市 +2.7%(都是超跌,不是追高) ### 9.13 主线行业层被否决(t=-8.5) - 主线行业(动量分位>0.7+量能<0.4) × 超跌:+3.2% **<** 全市场超跌 +4.5% - **"识别主线行业"作为选股层不成立**——超跌本身才是alpha,行业层多余 - 分年:2017/2018/2023/2026亏,2019/2020/2021/2024/2025赚(超跌反弹在弱市年有效) ### 9.14 核心方法论结论(回应老莫) - **选股=买点=拉升前那段超跌时期**,牛市弱市同一买点,不需要"识别主线行业" - 反复犯的错总结:①单日快照≠时期特征 ②事后分类(识别Top行业)≠事前可赚 ③样本内对比≠全市场事前验证 ④pivot位移假信号 ⑤幸存者样本不可外推 - 待做:超跌时期买点的完整资金模拟(对齐v4标准) ### 9.15 风控测试结论(2026-08-08深夜续) - **止跌企稳确认是错的**:+当日止跌/近3日企稳 → fwd40 从+4.5%降到+2.1%(真超跌买点在"还在跌"时,等企稳就晚了) - **大盘RSI窗口过滤改善有限**:2017/2018 无论怎么过滤仍亏(-2.2%/-1.3%)——**生态问题非过滤问题** - **可靠资金模拟(预计算路径,7.4万笔)**:2016-2018每笔-3.0%(失效)、2019+每笔+2.3%(有效,2024/2025年化60-90%) - **教训:逐日资金循环模拟引擎不可靠**(参数微调年化23.2%↔3.9%),必须用预计算路径法(v6b验证过的) - **最终定位:超跌买点是"2019+生态"策略,不是全周期策略;牛市无alpha是数据事实** - 回测用次日开盘价入场(杜绝信号日收盘买的未来幻觉) --- ## 十、2026-08-09 牛市叙事策略研究(老莫纠正:"我们本来在研究牛市策略") ### 10.1 跑偏纠正 - 前几天一直在研究超跌反弹(弱市逻辑),甚至发现 v_weak 已是实盘弱市策略——偏离了牛市策略目标 - **关键认知:叙事行业(2020新能源/2024AI)是消息面+基本面驱动,不是技术动量**。之前用动量识别行业是错的维度 ### 10.2 叙事行业真实存在(新闻热度证实,stock_news 403万条) - 通信设备(AI算力)新闻峰值:2024-04/2025-04/2026-04(年年4月叙事爆发) - 半导体:2024-10/2025-04/2026-04;电动乘用车:2025-02 - **新闻升温(heat_ratio>1.5) fwd3m +3.0% vs 不升温+1.2%**;2025/2026年叙事识别在变有效(+2.1pp/+9.0pp) - 但月度命中率20.8%≈随机——**热度爆发时已涨(是结果非原因)** ### 10.3 叙事+龙头持有(牛市策略,经得起路径模拟)✅ - 买入:新闻升温行业 + 行业内市值Top25%龙头(月频) - 出场:止损-15%/bias60>0.35/40日 - **可靠资金模拟(1.4万笔):年化23.1%、胜率47%、盈亏比1.66** - 分年:2019 +79.7%、2024 +52.1%、2025 +119.3%、2026 +48.8%(当前生态极强) - 生态:2020+每笔+3.5% vs 2016-2019 +1.6% ### 10.4 🔴 路径模拟关键教训(最重要) - 超跌精选组合(15万信号)路径模拟:**均值-5.6%、胜率14%、止损触发85%** - **面板 fwd40(+24.9%)只看40日后点收益,路径模拟先触-15%止损——超跌信号后经常先深跌15%再反弹,路径模拟在反弹前割肉** - **印证老莫:"深回撤/浅回调是未来数据,T日无法判断"** - **修正:之前所有"面板fwd40正收益"结论(超跌+4.5%、精选+24.9%)经不起路径模拟检验** - **v4 为什么可靠:它验证时就用真实路径+止损(胜率79%是真实交易胜率)** - **方法论新铁律:任何策略必须用路径模拟(止损+bias60+时间退出)验证,面板fwd40正收益不可作为可交易证据** ### 10.5 结论 - **唯一经得起路径模拟的:叙事龙头(年化23.1%)+ v4(年化13.5%)** - 牛市策略 = 叙事龙头持有(新闻升温行业+基本面龙头),当前生态极强 - 超跌精选的面板高收益是假象(止损85%)——需深挖如何降低止损率 - 待做:叙事龙头入场时机优化(降低止损率)