DuckDB 回测引擎 因子/策略历史赚钱吗?
2025-08-22 ~ 2026-08-21
二连板打板策略(DuckDB 回测)
242 交易日 · 前复权
01策略说明
用户定义规则 · 执行口径标注
选股空仓时选取当日二连板股票(连续 2 天涨停)
筛选①所属板块整体强势(本地库无板块归属 → 市场情绪代理:当日涨停≥20 家且上涨占比>50% [ASSUMED])
筛选②该股多头排列(MA5 > MA10 > MA20)
候选无符合 → 继续空仓;多只 → 选热度最高 1 只(历史热榜不可回溯 → 当日成交额代理 [ASSUMED])
买入次日开盘价 ≥ 昨收 -3% → 满仓买入;低开超 3% 放弃
卖出①买入当天收益为负 → 第 3 天(T+2)开盘直接卖
卖出②持有期间任一日跌 >7%,或连续阴线累计亏损 >10% → 次日开盘卖出
💡 策略本质:二连板「接力」打板——在情绪强周期的次日开盘介入连板股,靠高盈亏比(3.1)对冲低胜率(26.9%);关键风控是「当日收阴第 3 天卖」+「-3% 低开过滤」,变体验证均有效。
02回测总览
模型输出 · [MODEL]
胜率偏低 · 负超额
近 1 年(2025-08-22~2026-08-21,242 交易日)26 笔交易:胜率 26.9%、盈亏比 3.1、总收益 -18.8% vs 沪深300 +17.2%(跑输 36pct)、最大回撤 -61.4%。策略能抓妖股(+77%/+39% 大肉)但多数交易止损离场——打板接力的典型特征:低胜率高盈亏比,负期望+大回撤。
结论—— 策略近 1 年 -18.8%,跑输沪深300 36pct——低胜率(26.9%)+负期望是主因,盈亏比 3.1 不足以覆盖;参数已接近局部最优(5 变体对比验证),问题在策略结构而非参数。
数据含义—— 26 笔中仅 7 笔盈利但单笔 +24.8%(抓到 002565 +77%、600118 +38.8%、002980 +38.7% 三只妖股)——二连板接力在情绪高潮期暴利、退潮期连亏,收益高度依赖 3 笔大肉。
失败模式—— 19 笔亏损:11 笔「当日收阴第 3 天卖」(二连板次日收阴概率高=接盘弱势)、13 笔单日 -7% 止损(开盘直接崩,滑点大)、2 笔连续亏损 -10%——尾部 -11%~-20% 大亏集中在 2026-06~07 退潮期。
基准对比—— 同期沪深300 +17.2%——市场整体不差但打板策略负收益,说明该策略依赖情绪周期,2025-09~2026-02 强情绪期有效(+77%/+39% 均在此窗口),2026-03 起退潮后连亏。
优化方向—— ①胜率优先:板块强势改真实行业映射(当前情绪代理)+多头排列加量能确认 ②降波动:满仓改半仓/分批(回撤 -61%→-30% 级)③冰点过滤:涨停家数<15 强制空仓 ④买点优化:开盘半小时确认强势再介入(减少开盘滑点)。
投资指导—— 打板接力是高难度策略:近 1 年实测负超额,实盘需①降仓至 30% 以下 ②仅强情绪期参与(连板高度≥4 板)③单笔止损严格 4-5% ④先模拟盘验证 3 个月再上实盘——不建议直接满仓实盘。
03收益与回撤
策略净值 vs 沪深300 · 收盘口径
💡 净值曲线揭示周期依赖:2025-09~2026-02 强情绪期净值冲高(+77%/+39% 大肉均在此窗口),2026-03 起退潮期连亏回撤至 -61%——策略收益几乎全部来自情绪高潮期,弱市期是纯粹的磨损。
04交易分析
26 笔明细 · 卖出原因分布
交易明细 26 笔
| 选股日 | 买入日 | 代码 | 买价 | 卖价 | 收益 | 天数 | 卖出原因 |
| 2025-08-22 | 2025-08-25 | 000617.SZ | 12.004 | 11.905 | -0.85% | 2 | 当日收阴·第3天开盘卖 |
| 2025-08-28 | 2025-08-29 | 002195.SZ | 8.298 | 7.788 | -6.17% | 5 | 单日跌超7%止损 |
| 2025-09-08 | 2025-09-09 | 002709.SZ | 28.529 | 27.506 | -3.62% | 2 | 当日收阴·第3天开盘卖 |
| 2025-09-16 | 2025-09-17 | 002183.SZ | 5.98 | 5.52 | -7.72% | 2 | 当日收阴·第3天开盘卖 |
| 2025-09-24 | 2025-09-25 | 300604.SZ | 97.684 | 94.956 | -2.82% | 2 | 当日收阴·第3天开盘卖 |
| 2025-10-09 | 2025-10-10 | 000021.SZ | 29.719 | 29.332 | -1.33% | 3 | 单日跌超7%止损 |
| 2025-10-31 | 2025-11-03 | 603686.SH | 32.685 | 29.651 | -9.31% | 4 | 单日跌超7%止损 |
| 2025-11-10 | 2025-11-11 | 002759.SZ | 39.5 | 41.5 | +5.03% | 6 | 单日跌超7%止损 |
| 2025-12-01 | 2025-12-02 | 002565.SZ | 8.97 | 15.9 | +77.23% | 12 | 单日跌超7%止损 |
| 2025-12-19 | 2025-12-22 | 002149.SZ | 39.916 | 36.614 | -8.30% | 2 | 当日收阴·第3天开盘卖 |
| 2025-12-25 | 2025-12-26 | 600118.SH | 73.985 | 102.68 | +38.75% | 13 | 单日跌超7%止损 |
| 2026-01-19 | 2026-01-20 | 603667.SH | 88.836 | 78.764 | -11.37% | 7 | 连续亏损累计超10% |
| 2026-02-03 | 2026-02-04 | 002471.SZ | 9.4 | 9.71 | +3.27% | 5 | 单日跌超7%止损 |
| 2026-02-24 | 2026-02-25 | 601890.SH | 13.537 | 13.229 | -2.30% | 2 | 当日收阴·第3天开盘卖 |
| 2026-03-05 | 2026-03-06 | 300265.SZ | 21.852 | 20.313 | -7.07% | 2 | 当日收阴·第3天开盘卖 |
| 2026-03-18 | 2026-03-19 | 600307.SH | 2.4 | 2.04 | -15.03% | 2 | 当日收阴·第3天开盘卖 |
| 2026-03-24 | 2026-03-25 | 600032.SH | 11.615 | 11.415 | -1.75% | 3 | 单日跌超7%止损 |
| 2026-04-07 | 2026-04-08 | 002980.SZ | 55.0 | 76.32 | +38.73% | 18 | 连续亏损累计超10% |
| 2026-05-08 | 2026-05-11 | 002491.SZ | 22.73 | 24.07 | +5.87% | 4 | 单日跌超7%止损 |
| 2026-05-22 | 2026-05-25 | 000725.SZ | 5.127 | 5.077 | -1.00% | 5 | 单日跌超7%止损 |
| 2026-06-05 | 2026-06-08 | 920438.BJ | 93.44 | 81.897 | -12.38% | 3 | 单日跌超7%止损 |
| 2026-06-22 | 2026-06-23 | 000657.SZ | 113.697 | 100.741 | -11.43% | 2 | 当日收阴·第3天开盘卖 |
| 2026-06-30 | 2026-07-01 | 002407.SZ | 54.8 | 48.51 | -11.51% | 3 | 单日跌超7%止损 |
| 2026-07-10 | 2026-07-13 | 000892.SZ | 4.41 | 3.52 | -20.21% | 2 | 当日收阴·第3天开盘卖 |
| 2026-07-23 | 2026-07-24 | 600722.SH | 11.21 | 9.26 | -17.43% | 2 | 当日收阴·第3天开盘卖 |
| 2026-07-29 | 2026-07-30 | 600693.SH | 9.28 | 9.69 | +4.39% | 12 | 单日跌超7%止损 |
卖出原因分布
💡 亏损主因是「当日收阴第 3 天卖」11 次(二连板次日收阴=接力失败,及时止损是对的)与开盘直接崩盘的滑点型止损(-20%/-17%/-15% 三笔)——买入时点与止损执行是最大损耗源。
05参数敏感性
同一引擎 5 变体对比 · 验证优化方向
| 变体 | 交易 | 胜率 | 平均盈 | 平均亏 | 盈亏比 | 总收益 | 最大回撤 | 结论 |
| V1 原始策略 | 26 | 26.9% | +24.8% | -8.0% | 3.10 | -18.8% | -61.4% | 基准(当前最优) |
| V2 去掉当日收阴卖 | 19 | 31.6% | +24.0% | -12.1% | 1.98 | -44.2% | -71.2% | 更差:该规则是有效风控 |
| V3 止损放宽-10% | 21 | 23.8% | +33.8% | -9.0% | 3.74 | -16.0% | -71.1% | 收益略好但回撤大幅恶化 |
| V4 低开阈值放宽-5% | 31 | 16.1% | +18.2% | -7.0% | 2.62 | -67.9% | -76.0% | 灾难:-3% 低开过滤极重要 |
| V5 连续亏损收紧-7% | 27 | 22.2% | +28.5% | -7.8% | 3.66 | -30.3% | -66.9% | 更差:止损过紧砍掉修复 |
💡 参数敏感性结论:V1 已是风险调整后最优——「当日收阴卖」(V2 去掉后 -44%)与「-3% 低开过滤」(V4 放宽后 -68%)都是关键风控,不能动;放宽止损(V3)收益略好但回撤恶化到 -71%。**策略的问题在结构(选股质量/满仓/周期依赖),不在参数。**
06优化建议与风险
基于变体证据 · 模型输出
优化建议(按优先级)
结构问题非参数5 变体验证 V1 已是最优——不要调参数,要改结构:选股质量/仓位/周期过滤
胜率优先改进①板块强势用真实行业映射(接入申万/同花顺行业分类,替代市场情绪代理)②多头排列叠加量能(放量 2 倍以上)③候选热度用换手率+龙虎榜(替代成交额)
降回撤核心满仓→半仓或三档分批:回撤 -61%→约 -30%;单笔仓位 ≤20%,同板块持仓 ≤40%
周期过滤情绪冰点(涨停<15 家/连板高度<3 板)强制空仓——2026-03 后连亏期可规避大部分尾部亏损
买点优化开盘价买入滑点大(-20% 那笔开盘直接崩)→ 改为开盘 30 分钟确认不破均线再介入,或竞价低开 -3% 内分批
实盘纪律先模拟盘 3 个月 → 胜率≥35% 且回撤≤-25% 再小仓实盘;单笔止损 4-5%、总仓位 ≤30%
风险提示
回测口径:前复权数据、开盘价成交、未计印花税(卖出 0.1%)与冲击成本,实际收益会更低 [ASSUMED]
板块强势/热度为代理指标(本地库无板块归属、热榜历史不可回溯),真实映射下结果可能显著不同
满仓单标的回测放大了波动与回撤;未复权除权日可能影响个别涨停/止损判定(连板股除权罕见,影响可控)
策略收益高度依赖 3 笔大肉(+77%/+39%/+39%),若剔除则总收益更差——胜率不足时的幸存者偏差风险
2025-09~2026-02 强情绪期占大部分盈利,策略本质是情绪周期博弈,弱市(涨停<20 家)应直接停用
数据来源:同花顺金融数据(hithink-finance v0.1.5,本地 DuckDB v_daily_qfq 前复权日K + index history 沪深300);回测区间 2025-08-22~2026-08-21(242 交易日,MA20 预热从 2025-07-01 起);口径:涨停=前复权相邻日收益率(主板 ≥+9.8%、创业板/科创板 ≥+19.8%);二连板=连续 2 天涨停;多头排列=MA5>MA10>MA20;板块强势=当日涨停≥20 家且上涨占比>50%(市场情绪代理 [ASSUMED]);热度=当日成交额代理 [ASSUMED];交易按开盘价成交、满仓单标的、含单边 0.03% 费率(印花税未含);变体对比为同一引擎参数扫描。回测结果为历史数据模拟 [MODEL],不代表未来表现。仅供研究参考,不构成个人投资建议。