# MoFin 策略研究方法论总纲 > 唯一权威的方法论文档。所有策略研究必须遵循本文档的流程与铁律。 > 最后更新:2026-08-09(老莫要求从头整理,梳理清楚) --- ## 🔴 零、铁律(每一步必须自检,违反即重做) > 2026-08-09 老莫怒斥后立规。**以下规则无例外,任何一步研究推进前必须逐条自检。** ### 铁律 0:禁止拍脑袋数值(最高优先级) **任何阈值、目标价、止损价、参数,禁止凭空设定或"乘以一个系数"。** - ❌ 禁止:`过去60日高点 × 0.9`、`固定 +15% 止盈`、`-10% 止损`、`RSI<45 拍脑袋` - ✅ 必须:每个数值**注明来源**(来自哪一步数据归纳/哪条规则/哪个结构点),写不出来源 = 该数值作废 - **自检**:问自己"这个 0.9 / 15% / 45 是怎么来的?有数据证据吗?"——答不出 = 不能进代码 ### 铁律 1:支撑/压力位必须用科学方法计算 **支撑位、压力位、入场区间、出场区间,全部基于技术分析结构,禁止用固定窗口/固定百分比。** - 可用的科学方法(老莫指定): 1. **筹码密集区**上下沿(成交密集的价格区间 = 强支撑/强压力) 2. **均线系统**(MA20/MA60/MA120,股价与均线的相对位置、均线多空排列) 3. **通道上下沿**(趋势通道的边界) 4. **前高/前低**(结构点,突破/跌破才有意义,不是"最近20日最高/最低") - **强弱判断**:强支撑 = 多方法共振(筹码密集+均线+前低都在这附近);弱支撑 = 单一方法孤立点 - **自检**:每个支撑/压力位,能否说出"这是筹码密集区上沿 / MA60 / 前高结构点"?说不出 = 重算 ### 铁律 2:RR(风险回报比)必须基于科学支撑压力 **RR = (压力位 - 入场价) / (入场价 - 支撑位),压力位/支撑位必须来自铁律1的科学计算。** - ❌ 禁止:`target = 未来高点`(前视)、`target = 过去高点×0.9`(拍脑袋) - ✅ 必须:目标价 = 上方第一个强压力位(筹码密集上沿/均线/前高结构点);止损价 = 下方第一个强支撑位(筹码密集下沿/均线/前低结构点) - **无科学支撑压力的信号 = 不交易**(RR 无法计算 = 仓位无法确定 = 不做) ### 铁律 1b:科学支撑压力计算规范(落地公式,2026-08-09 明确) **四个关键点位 = 枢轴点系统(Pivot Points,经典技术分析方法)+ 筹码密集区** **① 枢轴点系统(四点位:强支撑S2/弱支撑S1/弱压力R1/强压力R2)** 基于当日(或回看窗口)最高H、最低L、收盘C: ``` PP = (H + L + C) / 3 # 枢轴点 S1 = 2×PP - H # 弱支撑 R1 = 2×PP - L # 弱压力 R2 = PP + (PP - S1) # 强压力(= PP + 有效区间) S2 = PP - (PP - S1) # 强支撑(= PP - 有效区间) ``` - **effective_range(有效区间)** = max(当日波幅, 多日平均波幅, 价格×5%);高位/低位运行扩大到 8% - 用途:S1/S2 = 下方两级支撑(破 S1 减仓、破 S2 清仓);R1/R2 = 上方两级压力(到 R1 减仓、到 R2 清仓) - 这是有学术/实践意义的经典方法(源自期货日内交易 Pivot 技术,MoFin `calc_support_resistance` 即此实现) **② 筹码密集区(MoFin `calc_chip_sr` 实现)** - 从日线 K 线(640 日 qfq 前复权)构建筹码分布:每根 K 线成交量按 OHLC 区间均匀分配(约5档),每日衰减 0.97 - 2% 区间聚合:价格按 2% 步长分桶,累加成交量 - **支撑** = 当前价下方成交量最大的密集区桶上沿;**阻力** = 当前价上方成交量最大的密集区桶下沿 - 用途:中长线支撑/压力参考(价下最大量=支撑/价上最大量=阻力) **③ 强弱判断(共振 = 强,孤立 = 弱)** - **强支撑/强压力** = 多方法共振:枢轴 S2/R2 + 筹码密集区 + 均线(MA20/60/120)+ 前高/前低结构点,两个以上落在同一区域 - **弱支撑/弱压力** = 单一方法孤立点(如只有枢轴 S1,无筹码/均线/结构配合) - 实证:距前低<5% 的票(近支撑)avg +10.93%/wr70%;距前低>10% 的票(无支撑)avg 崩至+4%以下(MoFin §17) **④ RR 取位规则** - 压力位 = 最近的上方强压力(优先 R2/筹码阻力,其次 R1);支撑位 = 最近的下方强支撑(优先 S2/筹码支撑,其次 S1) - RR = (压力位 - 入场价) / (入场价 - 支撑位),RR < 1.5 不交易 - 深超跌票(下方无可靠技术支撑)→ 止损用固定规则(数据归纳),不硬套支撑位 **⑤ 止损止盈必须预留余量(2026-08-09 老莫补充,防洗盘/假触及)** - **止损**:不设在支撑位本身,设在支撑位**下方 × 缓冲余量**——主力可能蓄意击穿支撑洗盘,机械止损会被洗出去 - **止盈**:不设在压力位本身,设在压力位**附近/下方留余量**——价格可能在到达压力位之前就下跌,或只瞬间触及就迅速回落 - **余量大小必须数据验证**:不同余量(0%/1%/2%/3%/5%)在历史信号上的收益/胜率/回撤对比,取数据最优者 - **禁止拍脑袋定余量**(如"就 2% 吧")——必须跑余量敏感性测试 - 参考实证:弱支撑 S1 距入场仅 1.6% → wr 崩至 17.9%(太近,一买就被扫)——余量过小/支撑过近同样致命(MoFin §17.4) ### 铁律 3:入场/出场区间必须用结构点定义 - **入场**:不是"回升3%就买",而是"价格到达支撑/压力结构确认点"(如回踩支撑企稳、突破压力确认) - **出场**:不是"涨15%卖",而是"价格到达上方压力结构点分批卖";止损不是"-10%",而是"跌破下方支撑结构点" - **每次重评**:价格触及结构点时,用 12 维重新评估(铁律的落地方式) ### 铁律 4:每一步推进前,先念一遍自检清单 **开始任何计算/写代码/下结论前,逐条确认:** - [ ] 这个数值有数据来源吗?(不是拍脑袋) - [ ] 支撑/压力位是筹码密集/均线/通道/结构点算的吗?(不是固定窗口) - [ ] RR 用了科学支撑压力吗?(不是"未来高点"/"过去高点×系数") - [ ] 入场/出场是结构点定义吗?(不是固定百分比) - [ ] 有前视偏差吗?(未来数据禁止用于信号/参数/仓位) - [ ] 结论经过全市场验证 + 负面剔除 + 去极端年了吗? - **任何一条不过 → 停手,先修正再继续** ### 铁律 5:违反后的处理 - 发现自己/脚本违反了铁律 → **立即停下**,承认,重做该步骤 - 不掩盖、不将错就错、不用"约等于"糊弄 - 老莫的验收标准(年化≥13.2%)只有在**全部铁律遵守**的前提下才有意义 --- ## 一、研究出发点(老莫定的) 1. **唯一验收标准**:策略实操年化 ≥ 大盘涨幅 + 10 个百分点 - 大盘基准(上证 2016-2026):年化 3.2%,累计 34.4% - **达标线:年化 ≥ 13.2%** - 不达标 = 策略无价值,不做 2. **研究要与 MoFin 实际应用整合**:策略要能嵌入 MoFin 工作流(选股→入场→出场→重评) 3. **验真证伪优先**:先证明策略真实有效,再谈上线 ## 二、MoFin 工作流程(策略嵌入的框架) ``` 选股 → 入场(分仓,多次)→ 出场(分仓,多次)→ 每次重评 ``` 1. **选股**:全市场扫描 → 候选池(多维度评分排序) 2. **入场**:定入场区间(entry_low/entry_high),分批建仓,每次评估策略是否成立 3. **出场**:支撑位下方×缓冲止损(防洗盘)/ 压力位止盈,分批减仓 4. **重评**:每次价格触及关键位(支撑/压力)时重新评估,订立/修正策略 **关键**:策略不是"买入持有到固定时间",而是持仓期间持续重评。 ## 三、12 维重评框架(核心工具) ### 3.1 定义:12维 = 3层级 × 4维度 | | **消息面** | **基本面** | **技术面** | **资金面** | |---|---|---|---|---| | **大盘** | 大盘新闻/情绪 | 宏观指标 | mkt_rsi / mkt_adx / mkt_ret1 | 两市成交量/北向 | | **行业** | 行业新闻热度 | 行业景气 | sec_ret1 / sec_above / 行业动量 | 行业资金流 | | **个股** | news3(3日新闻数)/ 情绪 | 市值/PE/PB | rsi / bias60 / bias20 / dist_lo20 / ret1 / limit_up / hi20_new / limit_n / 缩量 | flow5(5日资金流)| **落地因子**(脚本已实现):mkt_rsi、mkt_adx、mkt_ret1、sec_ret1、sec_above、rsi、bias60、bias20、dist_lo20、flow5、news3、ret1、limit_up、hi20_new、limit_n、缩量shrink ### 3.2 用途一:由果及因挖因子(逆推法) **先找到真实大涨段(果)→ 12维全景画像(因)→ 找分层器 → 归纳因子组合 → 验证** | 步骤 | 内容 | 要点 | |---|---|---| | 1. 果 | 定义显著收益票 | 如60日≥p90,覆盖全市场,非单一年份 | | 2. 因 | **12维全景画像** | 真实买点均值 vs 随机均值,找分层维度 | | 3. 全市场筛 | 因子组合全市场重筛 | 验证不是样本内拟合 | | 4. 负面剔除 | 筛集内亏损vs盈利对比 | **负面剔除 > 正面排序** | | 5. 正负合并 | 剔除亏损共性 | 保留正因子 | | 6. 稳健验证 | 去极端年+覆盖≥80月+正贡献≥7年 | 非过拟合 | ### 3.3 用途二:每个买卖点/信号的重评依据(老莫核心要求) **MoFin 工作流是"选股→入场→出场→每次重评",而重评的依据就是 12 维全景**: - **入场重评**:信号出现时,不只是看触发条件,还要看 12 维是否共振(大盘状态 + 行业状态 + 个股各维度) - **出场重评**:价格触及支撑/压力时,用 12 维判断"该走该留"(大盘转弱?行业转弱?资金流出?) - **信号分层**:同一信号池内,用 12 维分位数区分强弱(如 dist_lo20、rsi 分位) **落地脚本**: - `mofin_12d_mining.py` — 弱市日全市场 12 维因子档位 vs 随机基线(找分层器) - `mofin_12d_mining_v2.py` — **v2 补全基本面维度**(PE/PB/市值分位,真实历史数据) - `mofin_12d_profile.py` — 真实买卖点 × 12维画像(不预设规则,让数据归纳) ### 3.3b 重评触发体系(4 类重评)(2026-08-19 老莫 明确) **重评 = 12 维 LLM 重评(铁律)**:凡是"重评"必须是完整的 12 维分析且 LLM 参与(12 维包含消息面,不可能是纯技术计算)。任何不经 LLM 的"技术快算/简化重评"都不是重评。 **系统只有 4 类重评**(不是 4 次,是 4 类;因分仓机制,买/卖类可被多次触发): | # | 重评类型 | 触发时机 | 流程 | |---|---------|---------|------| | 1 | **选股/提拔重评** | scanner 因子初筛出候选 → promote 提拔入自选 | 补全 12 维 → LLM 重评 → ①判断值不值得入 ②明确入的话的具体策略 | | 2 | **进入操作区(买)触发重评** | 盘中价格进入买入区 | 触发 LLM 重评 → 重评后仍维持买入建议 → 才发买入推荐(可多次,分仓)| | 3 | **进入操作区(卖)触发重评** | 盘中价格进入卖出区(止盈/止损/波段)| 触发 LLM 重评 → 重评后仍维持卖出建议 → 才发卖出推荐(可多次)| | 4 | **每日盘前重评** | 每日盘前 | 所有池子(自选 + 持仓)每一只都做 12 维 LLM 重评 | **分支策略说明**:分支策略(如"突破站稳 x 则买 / 跌破站稳 y 则买")会定义多个同类/异类操作区(可能两个都是"买"性质),但这**不影响 4 类重评的类别划分**——它们仍属于第 2/3 类(进操作区触发)。 **三大原则(顶层铁律)**: 1. **12 维重评必须 LLM 参与**(消息面本身就需要 LLM 理解) 2. **进入操作区 → 触发 LLM 重评 → 重评结论维持 → 才发推荐**(不触发重评直接推旧结论 = 假警报) 3. **冷却期防频繁触发**(进区信号 30min~1h 同股同区间不重复触发;突发例外:距上次 ≤15min 且涨跌 ≥5% 跳过冷却立即推) **落地脚本映射**: - 类1:`promote_candidates.py`(提拔时调 per_stock_reassess 做 LLM 12维) - 类2/3:`stale_push_wlin.py` / `price_monitor.py`(进操作区触发——**必须走 per_stock_reassess 的 LLM 12维,禁止技术快算**) - 类4:`premarket_full_review.py`(盘前全量,自选+持仓一一 LLM 重评) > ⚠️ 2026-08-19 教训:price_monitor 曾用 reassess_with_context/reassess_strategy(技术快算,无 LLM)做"盘中重评",违反类 2/3 定义。已改名为"价格触发提醒"(只提醒不重评)或改为调用 per_stock_reassess 做真 12 维 LLM 重评。 ### 3.4 12维挖掘实证结论(弱市日全市场 2018-2026,300万样本) **口径**:大盘选股"互补 2. **弱市不追高**(大市值/高PB/强行业动量/涨停/20日新高全负)——做超跌低吸,不做强势 3. **大盘恐慌日超额最高**(RSI最低档+3.89pp)——对应 v_weak 的 ADX 甜区逻辑 4. **资金流中高为正、极高为负**(2-3档+2.9pp,4档-4.1pp)——资金流见顶后是出货 **对 v_weak 的指导**:六条件基础上叠加**市值/估值过滤**(排除大市值高PB票),聚焦小盘低估,弱市收益可提升。 **禁止**: - ❌ 拍脑袋定指标再找数据验证(先射箭再画靶) - ❌ 固定天数/数值/阈值(为什么是60不是50?) - ❌ 单日特征识别买卖点(当天可能洗盘) - ❌ 事后指标当信号(拉升当天资金流入=结果非原因) ## 四、验真证伪流程(必须遵守) ### 4.1 数据准备(第一步,必须做) | 检查 | 方法 | 通过标准 | |---|---|---| | **除权/复权异常** | 剔除单日\|ret\|>25% | A股涨跌幅上限(主板±10%/创业板科创板±20%)| | **停牌处理** | 缺失日期不参与 | 不产生假收益 | | **复权一致性** | 全市场统一复权口径 | 无个别票暴跳 | | **快照偏差** | 检查"当前市值/行业"是否用于历史 | 用历史或当日数据 | ### 4.2 信号验证 | 步骤 | 方法 | 铁律 | |---|---|---| | 1. 无前视 | 信号只用 t-1 及以前数据 | 月频用上月;快照不筛历史 | | 2. 路径模拟 | 止损/止盈/时间退出 逐日模拟 | **面板fwd正收益≠可交易** | | 3. 统一资金 | 资金约束+信号排队+逐日净值 | 单笔理想化年化≠真实 | | 4. 生态检验 | 分年检查+去极端年 | 当前生态正,旧生态可接受 | | 5. WFO | IS优化→OOS验证→滚动 | OOS是IS"打折仍认得出" | ### 4.3 四大陷阱(回测膨胀根源) 1. **过拟合**:反复调参记住噪声 → 用 WFO 验证流程,不扫描找最优 2. **前视偏差**:shift错/收盘后数据/快照 → 严格 t-1 3. **选择偏差**:只展示最好变体 → 展示全部(含失败) 4. **制度盲区**:特定环境测试好部署崩 → 生态检验 ### 4.4 引擎验证(重要) - **自建模拟引擎必须先验证**:用 MoFin 已验证策略(如 v_weak 年化15-16.7%)做基准测试 - 引擎跑不出接近结果 = 引擎有 bug,不能用于策略结论 - **未验证引擎的数字不可信** ## 五、已确认的坑(勿重犯) 1. pivot宽表shift/pct_change是行位移 → 停牌股假信号 2. 幸存者样本(196个成功段)特征不可外推 3. 面板fwd正收益≠可交易(必须路径模拟) 4. 前视偏差:月频信号用t-1数据;快照(当前市值)不筛历史 5. 信号定义必须用真实参数(v4误定义成深超跌的教训) 6. 支撑/压力禁止固定窗口(筹码密集区/swing/通道/均线) 7. 单笔理想化年化≠统一资金模拟(资金约束摊薄) 8. 除权数据污染(|ret|>25%集中在2024-2026)——模拟前必须剔除 9. 当前市值筛选历史信号=前视偏差 10. 反复调参=过拟合,按 WFO 验证流程 ## 六、MoFin 已验证的结论(可直接用) ### 弱市(MoFin 验证达标) - **弱市无选股alpha,"仓位管理>选股"**(§12) - **等权6槽 > 任何分级仓位**(§15) - **每月限8信号 > 过滤/止损**(§16) - **深超跌票下方无可靠技术支撑,用固定止损**(§18) - **大盘ADX是弱市edge前提**:甜区[25,30](§13) ### v_weak(弱市策略,实盘 mr_scanner.py 在跑) - 大盘:上证0) - 出场:科学支撑压力(筹码密集区) - **状态**:引擎未验证,待 MoFin 引擎下验证达标(≥13.2%) ## 七、仓位管理(MoFin 实盘规则) ### RR→仓位映射(MoFin 源码) ``` RR<1.5 → 不推荐 1.5~3 → 8% 3~5 → 12% 5+ → 15% ×成长系数0.85 → clamp[5,20](典型6-12%) ``` - 买入资格:RR≥2.0 + 现金预算内 - 换仓:现金不足时卖6维评分最差弱持仓 - 移动止损:止损只上不下 ## 八、文档体系 | 文档 | 用途 | |---|---| | **本文档** | 方法论总纲(权威,铁律/流程/标准)| | 研究日志 | 时间线事实记录(做了什么/发现/待办)| | 策略现状 | 当前策略状态、达标情况、数据资产 | | 脚本清单 | 脚本管理(保留/归档/删除)| ## 九、本次研究新结论(2026-08-10,数据驱动验证达标) > 由果及因完整链路:大涨段(果)→ 12维预测因子扫描 → 三段分析 → 统一资金模拟。 > 全部阈值经数据扫描(step27-37),无拍脑袋。 ### 9.1 预测性信号(事前可计算,核心成果) **弱市+小市值+低PE+新闻+行业跌+深跌**: ``` 大盘RSI < 50(弱市/恐慌) + 市值分位 < 0.2(小市值) + PE分位 < 0.2(低估值) + 新闻数 ≥ 1(消息面) + 行业20日动量 < 0(行业弱) + 个股bias60 < -20(深度超跌) + 大盘距60日高点回撤 ≤ -5%(非高位/牛市) ``` - **大涨率 10-11.6%**(全市场基线 3.52% 的 3.4 倍) - avg60 14.6-18.2%、胜率 68-74%(单信号) - **预测力随因子叠加单调提升**(3.52→6.96→9.41→11.61) ### 9.2 关键数据发现(打破直觉) 1. **牛市强者恒强不可交易**:追涨信号(行业强+龙头+前60涨)avg60 为负(-0.3~-2.1%)——强者恒强是"结果"不是"可预测入场信号" 2. **超跌策略需大盘门控**:大盘RSI<50时 avg16-18%,>60时衰减到 5.9% 3. **大盘深跌末期信号最强**:大盘回撤15-20%时 avg60 31.2%、胜率93.8% 4. **支撑压力保护兑现收益**:裸持有5.13% → 支撑保护9.63% → 阶段过滤14.75% ### 9.3 最终策略(统一资金模拟验证) - **入场**:信号日收盘买(step30验证最优) - **止损**:科学支撑位(枢轴S2/筹码支撑)下方5%缓冲(step34验证) - **止盈**:压力位(枢轴R2/筹码阻力)分批卖(step34验证) - **兜底**:40日持有(step30验证) - **资金**:10槽 + 15%仓位(step35参数扫描) - **结果**:**年化 14.75%**(达标≥13.2%)、胜率90.3%、单笔+16.39%、总收益329.5% - **待改进**:回撤-36.4%偏大、2019年-6%亏损年 ## 十、温区自适应方法论(2026-08-13 新增) > 核心认知(来自量化文献+MoFin实证):**没有任何策略能在所有市场环境通吃**——每个策略有它的"适用温区"(市场状态),策略组合应按当前温区自动激活/休眠。 ### 10.1 温区三态判定 - **trend_up**(趋势市):above_ma20 + adx≥20——趋势策略(追涨/龙头识别)适用 - **choppy**(震荡市):adx<20——均值回复策略(超跌反弹)适用 - **trend_down**(下跌市):below_ma20 + adx≥20——深超跌/恐慌策略适用 **滞回平滑(K=5)**:连续5天同温区才确认切换(数据选参:112周期/20.7天/无1天噪音),避免单日噪音误判。 ### 10.2 温度(rsi 连续维度) - **温度分档**:panic(<35) / fear(35-45) / neutral(45-60) / greed(60-70) / euphoria(>70) - **仓位乘数**:恐慌重仓(mr 1.5倍)、亢奋减仓(0.3倍) - **温区与温度互补**:温区滞后(K=5确认)、温度实时(rsi连续量) ### 10.3 策略-温区对应(数据验证) | 策略 | 适用温区 | 胜率 | 依据 | |------|---------|------|------| | v_weak | choppy | 55% | 震荡市超跌确认 | | v_oversold | trend_down | 60% | 下跌市深超跌 | | v_mr_sel | trend_down | **93%** | 精选小盘超跌 | | v_next4/v8.1 | trend_up | 63%/57% | 趋势市追涨 | | s2_panic | trend_down×恐慌 | 86% | 极端恐慌买超跌 | | v_lurk_v3 | choppy/trend_down | 77%/71% | 潜伏型 | **原则**:策略全温区发信号(内部不留温区门控),适用温区由**实测胜率动态决定**(strategy_regime_perf 表常态化更新),不是固定映射。 ### 10.4 组合构建(温区自适应) - **单一策略是茧,多策略是翅膀**:策略组合按当前温区自动激活/休眠 - **分散化本质是低相关性**:跨策略类型(趋势/均值回复/事件驱动)组合 - **动态配置克制**:温区切换才调权重,"少动就是多赚" - **失效预警(三振出局)**:滚动胜率 <40% 黄牌减半、<35% 橙牌1/4、<30% 红牌淘汰(权重0观察) ### 10.5 信号溯源 - 每次推送记录:策略/版本/温区/原因(signal_ledger 表) - **多策略共振**:同一股票24h内被多个激活策略推 → 标记"🔥多策略共振"(加关注) - 用途:日后评估"哪个策略在什么温区推了什么股票,效果如何" ### 10.6 落地文件 | 文件 | 功能 | |------|------| | market_regime.py | 三态判定(已有,回填10年) | | regime_tracker.py | 滞回平滑(K=5)+ regime_cycles 周期记录 | | temp_band.py | 温度分档 + 仓位乘数 | | regime_perf.py | 策略-温区表现常态化记录 | | strategy_router.py | 动态策略路由(strategy_weights.json) | | strategy_executor.py | 温区策略调度器(按激活策略调度 scanner) | | signal_ledger.py | 信号溯源(推送记录+共振标记) | > 详见 SYSTEM_ARCHITECTURE.md 五.5 温区自适应系统(系统架构视角)。