策略说明
在用的策略 + 已否证的打法 · 参数与验证成绩全部摊开我们验证过能赚钱的只有一套:「精选 4 因子 + V3 换手纪律」(顺风窗 +334.93%、 逆风窗 +42.31%)。
另一套「六维共振评分」在同样的年份是 -34.94%(同期大盘 +21.23%),它只用来「体检」,不是买入依据。
每 40 个交易日选 10 只等权持有,靠纪律换手,用于信号塔与纸面跟踪。这是唯一验证过能赚钱的配置。但它需要 3 个月不动,不适合天天盯盘。
| 因子 | 方向 | 权重 | 怎么算 | 为什么用它 |
|---|---|---|---|---|
| 非流动性(Amihud) | 越大越好 | 25% | 日收益绝对值 / 成交额,越大越好(越不流动溢价越高) | A 股最稳的因子之一,但容量极小——大资金进不去,也是小账户的机会 |
| 账面市值比(B/P) | 越大越好 | 25% | 净资产 / 总市值,越大越好(越便宜越好) | 价值因子。注意:这里用的是**横截面分位**,不是 PE<15 这种绝对阈值 |
| 60 日动量(反向) | 越小越好 | 25% | 过去 60 日涨跌幅,**越小越好**(做反转,不追涨) | 与六维评分的「动量越大越好」方向完全相反——这是两套体系结论矛盾的根源之一 |
| 盈利收益率(E/P) | 越大越好 | 25% | 净利润 / 总市值,越大越好 | 与 bp 同属价值族但信息不同,两个一起用比单用稳 |
| 参数 | 当前值 | 可选项 | 说明 |
|---|---|---|---|
| 调仓间隔(交易日)freq | 40 | 10 / 20 / 40 / 120 | 40 日为默认;120 日是低维护备选(成本降到 1/2.5,顺风窗更优但逆风窗回撤大) |
| 持仓只数top_k | 10 | 5 / 10 / 15 / 20 | 越多越分散,10 只是收益与波动的平衡点 |
| 缓冲带倍数buffer_k | 1.6 | 1 / 1.2 / 1.6 / 2 | 持仓只要没掉出 top_k×1.6 就不卖——降换手的关键,V3 唯一稳赢的改进 |
| 最小持有天数(交易日)min_hold | 60 | 20 / 40 / 60 / 90 | 不满 60 天且没掉出 1.5×缓冲带就强制留着 |
| 最低日均成交额(元)min_amount | 2000 万 | 2000万 / 5000万 / 10000万 | 容量门槛。放到 5000 万,顺风窗收益从 116% 掉到 45%——小盘是这套策略的命根 |
| 初始本金(元)capital | 100000 | 50000 / 100000 / 200000 | 影响能否凑够一手;10 万分 10 只,每只约 1 万 |
| 单边滑点slippage | 0.0015 | 0.001 / 0.0015 / 0.003 | 回测假设 0.15%,实盘小盘股可能更差 |
- 2026-10-28 重定基线:池子从「按历史长度取 716 只」改为「全池 861 只 + 上市满 250 日闸门」。旧数字(逆风 +116.38% / 顺风 +244.56%)不可再与新数字直接比较——历史长度被补齐后按长度选池已退化成随机抽样(581 只行数完全相同)。
- 数据源由东财换成新浪(腾讯 qfq 对高分红股早期历史返回负价格,已弃用),复权基准与旧报告不同。
- 容量小:1000 万以上资金收益显著衰减。
- 扩张窗 2015-2019 含 2015 股灾与 2018 单边熊,收益 +16.14%、回撤 -53.5%——说明这套策略不是全天候,弱市里必须靠仓位控制而不是指望它赚钱。
- 同一交易日的 60 日前瞻窗口高度重叠,阶段条件收益的『胜率』有效样本远小于天数。
给单只股票打分排序,用于今日扫描与个股诊断。已停用:回测亏损,扫描/诊断都不再用它。保留代码仅为复现否证。
| 因子 | 权重 | 怎么算 | 已知问题 |
|---|---|---|---|
| 趋势(均线多头) | 25% | 收盘>MA20 且 MA20>MA60 且 MA20 斜率向上,每项 1/3 分 | 纯价格规则,参数(20/60 日)写在 strategies/trend.py 里 |
| 中期动量 | 10% | t-12个月→t-3个月 涨跌幅,在扫描池内排前 10%/30%/50% 分档给分 top_pct=0.1 · mid_pct=0.3 | 横截面排名,必须整池一起算;单股诊断时会退化成绝对阈值 |
| 量价配合 | 15% | 5 日均量 / 60 日均量 ≥ 1.2 且 5 日涨幅 > 0 → 满分;缩量下跌给低分 vr_hi=1.2 · vr_lo=0.8 | 识别「放量上涨」与「缩量下跌」两种最可靠组合 |
| 估值(PE/PB) | 25% | PE<15 满分 / <25 得 0.6 / <40 得 0.3;PB<1 满分 / <2 得 0.6 / <4 得 0.3 pe_cheap=15 · pe_ok=25 · pb_cheap=1 · pb_ok=2 | 绝对阈值不是分位 → 银行股常年满分,这是「扫描全是银行」的主因之一 |
| 龙头(市值/成交额) | 15% | 总市值排名 + 成交额排名,各取前 10%/30%/50% 分档 top_pct=0.1 · mid_pct=0.3 | 偏好大市值大成交额 → 天然偏向银行、两桶油这类权重股 |
| 低波动 | 10% | 60 日年化波动率,池内最低的前 10%/30%/50% 分档 top_pct=0.1 · mid_pct=0.3 | 低波动本身不是收益来源,它只在震荡市里降低回撤 |
四个变体全部为负,同期基准 +21.23%。说明「六维打分排序」这套逻辑在2024-2026 这段行情里没有信息含量。评分只能当『股票现在的状态体检』看,不能当买入依据——真正通过验证的是 4 因子组合。
想自己改权重试算? 去个股诊断页 ——那边可以逐项调权重,还有「只看技术面 / 只看便宜 / 只做反转」四套预设,实时看分数变化。
老板提的这套直觉(5 日线、10 日线快速评判,站上 60 日线买,量能突破选强势股)我们全跑了。 结论很硬:在本池(716 只历史最长的票)它是负 alpha, 18 种突破参数 + 7 种回踩参数 + 7 种闸门 + 5 种卖出纪律 + 5 种指数择时,没有一种能在两个窗口同时跑赢躺着拿。
| 怎么用 | 逆风窗 2020-23 | 顺风窗 2024-26 | 判定 |
|---|---|---|---|
| 「站上 60 日线」的未来 20 日超额 | -0.18% | -0.79% | 追高是负 alpha,与 4 因子的「反转」正好相反 |
| 纯均线策略(18 种参数里最好的「破 60 日线才卖」) | -29.3% | -13.1% | 同期同池买入持有 +73.4% / +43.6% |
| 趋势内买回踩(7 种参数里最好的「回踩 MA20、破 MA60 出」) | -8.1% | -13.1% | 改善明显,但仍不如躺着拿 |
| 当闸门加到 4 因子策略上(只要站上 60 日线的票) | +244.6% → +236.6% | +116.4% → +42.1% | 把「跌得多才便宜」的票全过滤掉了 |
| 当卖出纪律(持仓跌破 MA60 就卖) | +244.6% → +11.3% | +116.4% → -0.6% | 反转策略靠「拿住下跌」赚钱,破位卖出等于剪掉收益 |
| 拿去管总仓位(沪深300 站上 MA60 才开仓) | +244.6% → +165.3% | +116.4% → +49.1% | 回撤略降,收益砍半,不划算 |
所以它现在的身份是「仪表」,不是「信号」:首页的快速评判给出池内站上 60 日线的比例、 短期多头比例、放量比例;个股诊断页给出这只票相对 5/10/20/60 日线的位置和量能状态。 这些都不产生买入指令,只帮你在 1 秒内看清「现在是趋势内还是趋势外、是放量还是缩量」。 完整实验数据(含每种参数的收益/回撤/交易次数)见仓库 docs/均线量能-W15.md。
| 用途 | 股票数 | 范围怎么定 |
|---|---|---|
| 今日扫描 / 个股评分 | 864 / 5570 | stock_daily 里日线 ≥60 根的股票。全库 5570 只,但只有 864 只有足够长的日线历史(其余是快照增量,只有几根) |
| 4因子纸面跟踪 | 861 | 全池:stock_daily 里有真实日线的全部股票(回测/纸面跟踪域)。2026-10-28 起改为全池 + 上市满 250 日闸门;旧的「716 只」按历史长度选池已退化(补齐历史后 581 只行数完全相同,排序等于随机) |
| 估值与龙头快照 | 5575 | spot_snapshot 最新一期(全市场实时快照,含 PE/PB/市值/成交额)。估值与龙头因子只依赖这个快照 |
这三个池不是同一个池:扫描用 864 只(有 60 天以上历史),纸面跟踪用 716 只(历史最长的一批,偏中小盘)。 同一只股票在两个池里的排名分母不同,分数会有差异——这是口径问题,不是 bug。
| 阶段 | 触发条件 | 会误判成什么 |
|---|---|---|
| 吸筹 | 20 日振幅 ≤18% + 量比 ≤0.95(缩量)+ |20 日涨幅| ≤10% + ATR 相对 60 日均值 ≤0.9(波动收敛) | 长期阴跌的僵尸股也符合这三条,会被误判为吸筹 |
| 洗盘 | 距 20 日高点回撤 7%~28% + 放量(量比≥阈值)+ 20 日涨幅 > -18% | 和「砸盘初期」只差一个 28% 回撤线,临界点上会来回跳 |
| 拉升 | 放量突破 20 日新高,或 站上 MA20 且 MA20>MA60 + 20 日涨幅 ≥7% + 量能放大 + 处于箱体上沿 | 识别出来时往往已涨了 7% 以上,属于「确认后跟随」而非「提前埋伏」 |
| 出货 | 箱体位置 ≥75% + 放量(量比≥1.5)+ 5 日涨幅 ≤3%(滞涨);或 高位放量长上影阴线 | 强势股的正常换手也会命中,误报率较高 |
| 砸盘 | 5 日跌幅 ≥8% + 跌破 MA20 + 放量(非洗盘式收复) | 大盘系统性下跌时全市场同时命中,与个股自身操控无关 |
没有做过「人工标注真值」的准确率检验——因为「庄家阶段」本身没有公认的客观真值。唯一能验证的是「某个阶段之后 N 日的平均收益」,见 /phases 页的「阶段前瞻收益」表。那张表如果有结构(比如出货后 20 日平均跌),说明规则抓到了东西;如果没结构,就是噪音。
阶段定义(沪深300 是否在 MA60 上 + 池内站上 MA60 的比例)写在 jobs/regime_eval.py,下面的收益是「处在这个阶段之后,未来 60 个交易日」的实测均值,三段行情各跑一遍。 最反直觉的一条:四个阶段的最优动作都是「拿住 4 因子」—— 阶段只告诉你现在值不值得加钱进来,不告诉你换买什么。
| 阶段 | 池内 60 日 逆/顺/扩 | 三指数 60 日 逆/顺/扩 | 胜率 逆/顺/扩 | 该做 | 不该做 |
|---|---|---|---|---|---|
| 逆风(冰点) 该在场 | +5.99 / +13.56 / +9.11 | +6.24 / +11.44 / +6.25 | 76% / 79% / 64% | 别空仓、别割肉。这是全系统最强的环境——后面 60 日买什么都赚。 | 不要因为跌得难受就清仓;也不要以为「换个宽基更稳」能多赚。 |
| 过热 别加仓 | +0.06 / +2.96 / -8.83 | -2.74 / +4.31 / -8.57 | 51% / 69% / 28% | 不加仓、不加杠杆,照常持有但别追。 | 尤其不要买宽基指数——三窗两负(−2.74/+4.31/−8.57),扩张窗胜率只有 22.7%。 |
| 顺风 主场 | +4.12 / +2.84 / +0.69 | -0.23 / +1.70 / +0.98 | 62% / 63% / 55% | 照常满仓持 4 因子,这是它最赚钱的环境(顺风窗 +334.93%)。 | 不要为了「顺着行情」去买指数——个股超额 +4.35/+1.14pt,换过去就是送钱。 |
| 震荡 别折腾 | +2.31 / +0.11 / +1.77 | -0.47 / +1.29 / +0.59 | 60% / 37% / 55% | 拿着别动,别指望这一段赚钱。 | 不要因为「没有行情」而频繁调仓——这一段最容易把手续费磨出来。 |
W21 结论:阶段判断**决定该不该在场,不决定换买什么**。十档资产配置(冰点全换指数 / 半仓换 / 过热半仓现金 / 反向安慰剂)全部实测过,没有任何一档能三窗全胜——换资产的代价(顺风窗少赚 70~130pt)永远大于收益。唯一的正面发现:冰点期不要空仓(三窗胜率 64~79%),过热期不要买宽基(三窗两负)。
为什么要专门验「冰点买宽」:W19 发现冰点后池内 60 日 +5.99/+13.56/+9.11(胜率 64~79%), 但 4 因子在冰点区的超额是负的——说明涨的是整个市场,不是我们挑的那 10 只。 于是拿上证 / 沪深300 / 创业板指数做了十档配置对比:冰点买宽三窗确实全正 (+6.24/+11.44/+6.25),可和继续拿个股几乎一样(+5.99/+13.56/+9.11), 换过去只是波动小一点,顺风窗还要少赚 70~130pt。结论:不换。
问题原话:「两万的本金持股 6 支,如此分散怎么能赚到钱?应该是 1-3 支最好吧?」
这是唯一能诚实回答它的实验:选股逻辑一个字不改(同样 4 因子、同样 40 日调仓、 同样 2 万本金、同样股价 ≤25、同样只买主板 743 只),只改「同时持几只」。 三窗各跑一遍,任何差异都只能归因于持仓只数本身。
| 只数 | 单只权重 | 三窗收益 均值 / 最差窗 | 最大回撤 | 波动 | 40 日跌超 20% 出现概率 | 运气极差 随机因子 | 结论 |
|---|---|---|---|---|---|---|---|
| 1 只 | 100% | +975% / +9.9% | -66.2% | 48% | 3.5% | 221pt | 数学最优,实战最差:单票全压,回撤 −66%。 |
| 2 只 | 50% | +422% / -7.4% | -54.6% | 34% | 2.2% | 未测 | 账面压过 3 只,但一次停牌锁死一半仓位。 |
| 3 只 ★ | 33% | +248% / +0.8% | -55.6% | 33% | 1.6% | 90pt | 推荐:唯一三窗都不亏的小仓位数(0.76%)。 |
| 4 只 | 25% | +156% / -4.5% | -47.9% | 28% | 1.4% | 未测 | 分散的边际收益在这附近耗尽。 |
| 6 只 | 17% | +144% / -15.4% | -47.8% | 24% | 1.0% | 59pt | W22 原方案:稳妥,但把收益也摊掉了 40%。 |
| 10 只 | 10% | +122% / -17.5% | -47.2% | 20% | 0.2% | 未测 | 2 万买 10 只每只 2000 元,25 元的票连 1 手都买不起。 |
W23 实测(主板 743 只 · 2 万本金 · 股价≤25 · 4 因子 · 40 日调仓 · 三窗):只数从 10 减到 1,收益均值 122% → 975%,但最大回撤 −47% → −66%、波动 20% → 48%。集中买到的是杠杆,不是选股能力——顺风窗 14 个建仓日里,k=1 选中的那只14 次全部落在 k=3 的三只名单内,只是仓位差 3 倍。真正的分水岭是能否扛住回撤:2 万全仓一只,扩张窗最深亏到 6800,回本要涨 196%。建议区间 3~4 只,且这是「本金 2 万」的专属结论——本金上到 20 万以后,分散的性价比会翻转。
为什么「1 只多赚 6 倍」不能算选股更准:把 k=1 和 k=3 的建仓名单逐期对一遍, 顺风窗 14 个建仓日里,k=1 选中的那只 14 次全部出现在 k=3 的三只名单内—— 是同一份名单,只是仓位差 3 倍。所以集中放大的不是「挑得准」,而是「押得重」; 它真正说明的是:名单里排第 1 的那只确实比第 2、3 只好,把资金摊到后面几名就是纯稀释。但 14 期样本不足以证明「第 1 名永远最强」, 这也是 1 只不能押满的另一个理由。
「运气极差」是怎么来的:在 4 个真因子之外再塞一个纯随机因子当第 5 项(权重相同), 它不携带任何信息,唯一作用是轻微改变选出来的名单——正是实盘里「同样信号这次选 A、下次选 B」 的那点随机性。换 3 个种子看三窗收益差多少:k=1 差 220.8pt, k=3 差 90.2pt,k=6 差 58.9pt。1 只时,你分不清「这只票好」和「这次碰巧」。
一个前提必须说清:以上全部是只买沪深主板 743 只的结果,已剔除创业板(需 10 万+24 月)、 科创板(需 50 万)、北交所(需 50 万)与所有 ST / 银行保险。之前 W22 报告里 「控盘因子在扩张窗 +56.48%(+3.78σ)」是含创业板的池子跑出来的, 主板池里是 −7.48(−1.01σ)——那个优势全部来自创业板, 开不了权限就等于不存在。集中持仓也不会改变这一点。
这两样是市面上最常见的打法,也是老板点名要验证的。结论都是否决—— 不是因为「听起来不靠谱」,而是按真实成交价、真实手续费、三段时间窗都跑过,跑不出钱。 把它们写在最显眼的地方,是为了不再重复投入。
为什么做不到:在本池里方向与 alpha 来源相反:池子的钱来自「买跌得多的」,均线要求「买涨起来的」,两套逻辑硬碰必然互相抵消。
- 39 种参数组合全部落败,没有一种能三窗为正。
- 「站上 MA60 就买」未来 20 日超额 −0.18% / −0.79%(两窗)。
- 「量能突破」最差:20 日超额 −2.31% / −1.94%——放量在本池是出货而非启动。
- 教科书版(站上 MA60 + 快线多头 + 放量)总收益 −81.70% / −57.43%,免成本 −65.91% → 不是被手续费磨死,是方向就错。
- 最好的一档「趋势内回踩 MA20、破 MA60 走」也只有 −4.26% / −8.13%。
- 唯一双窗正收益:用沪深300 站上 MA60 作总开关 +165.27% / +49.12%,但收益只有基线的四成——那是择时降仓,不是选股策略。
留下了什么:均线不当买点,只当「今天市场顺不顺」的温度计(data/ma_state.json)与首页快速评判。
复现代码:backtest/ma_trend.py · jobs/ma_eval.py · 报告:docs/均线量能-W15.md
为什么做不到:统计上有微弱超额,交易上做不出来:隔夜跳空 + 高换手成本 + 一字板买不进,三道损耗叠起来把超额吃干净;且 2015-2019 段本身就是负的。
- W17 事件研究报「20 日超额 +2.53% / +2.43% / +1.95%,三窗全过」——但那个口径用**首板当日收盘价**买入,收盘后才确认的信号现实中买不到。
- 改用真实可成交价(次日开盘)后,20 日收益从 +1.79%/+5.80%/+0.68% 降到 +0.04%/+3.40%/−1.25%,三窗条件破裂。
- 隔夜跳空极其稳定地吃掉 1.75~2.40 个百分点;顺风窗 29.6% 的首板次日高开超 5%、17.6% 直接一字板买不进。
- 12 种组合参数(持有 1/3/5/10/20 日、止损、破 MA5、小盘优先、低换手优先、5 格/8 格、含连板)× 三窗,**没有一个能同时赢过 4 因子基线**。
- 最好的一档(免成本、持 5 日)逆风 +44.70% / 顺风 +40.16% / 扩张 −74.71%——即便把成本全免,扩张窗也是灾难。
- 单笔收益中位数三窗全为负(−1.1% ~ −7.5%):多数时候小亏,靠少数大肉,胜率只有 30%~41%。
留下了什么:首板只作「异动提醒」:盘后告诉你今天谁首板了(可观察,不推荐次日抢入)。
复现代码:backtest/firstboard.py · jobs/firstboard_eval.py · 报告:docs/首板-W20.md
一个必须说清的技术细节:W17 一开始算出「首板 20 日超额 +2.53%、三窗全过」, 是因为事件研究默认用首板当天收盘价买入——可首板要收盘后才确认,那个价买不到。 换成次日开盘价后,超额只剩 +0.04% / +3.40% / −1.25%,三窗条件当场破裂。 这类「看起来成立、按真实成交就消失」的结论,是这套系统最需要防的错误。
以上数字全部来自历史纸面回测,含滑点 0.15% / 佣金万 2.5 / 印花税 0.05%,不是实盘收益 · 只提醒不自动下单 · 据此操作风险自负。