## 第一骗 偷未来
- **不设置set_option("avoid_future_data", True)**
- **常见骗人策略类型: 所有策略**
这个实在是太常见了, 回测在盘中甚至开盘就获取收盘时的未来的信息进而做出决策, 还有超前引用财务数据、基金净值数据、因子性能数据、行业数据、模式数据等等. 收益逆天高, 回撤逆天小. 聚宽有大量机器人和新人爱发这种策略骗人骗自己.
**聚宽一直以来都有一个极其讨厌的设定: 股票名称不是当日名称, 而是当前名称. 这导致今天被st的股票, 几年前的名字也会突然全部st. 这使得很多策略在st之前就把将来会st的股票过滤掉了.** 聚宽真正的st状态获取选项是 get_extras('is_st', ..... , 但很不幸至今社区里流传的绝大部分策略仍然在用股票名假装自己是在过滤st st* 和退市股. 实际是在获取未来信息, 这种偷未来信息的办法无法轻易屏蔽掉.
要小心单纯avoid_future_data也不能完全屏蔽回测里的未来函数. 比如上面提到的名称包含未来的st问题. 所以拿到陌生策略一定要仔细看代码, 发给ai询问可能存在的未来函数, 以及自己跑一段时间模拟盘看看结果和回测是否相符.
## 第二骗 偷行业
- **故意选择几个过去几年上涨的行业和品种etf进行回测**
- **常见骗人策略类型: 各种ETF轮动策略**
这其实也是偷未来的一类变种, 只是周期长很多. 故意把策略限定在几个过去长得比较好的几个品种和行业里. 比如黄金etf, 纳斯达克etf, 2021年之前限定贵州茅台, 等等. 因为底层有限的几个标的过去都是一直涨, 所以策略本身其实根本无所谓好坏. 但问题是10年前你并不知道未来10年这些行业会涨势最好. 这就好像我穿越到10年前告诉自己btc会涨破10万美元. 那我肯定满仓买币. 可问题是, 今天是2025年, 2035年btc还会涨吗? 我有信心, 但我不知道未来的事情啊.
## 第三骗 偷滑点
- **故意**set_slippage(FixedSlippage(0.02))
- **常见骗人策略类型: 银行盘口套利策略, 小市值低价策略**
这条也极其泛滥, 大量人故意把滑点成本**固定为总共 0.02元**, 而不是贴合实盘正常的占比千分之二或更高. **set_slippage(PriceRelatedSlippage(0.002),type='stock')**
银行盘口套利等策略经常有人故意不写滑点, 让回测总能1000.55买, 1000.56卖赚一丁点钱. 实盘只有亏爆.
还有看到"双低"因子(市值低, 股价低)的策略也要立刻打起12万分的警惕. 市值低意味着盘口挂单很少, 股价低意味着买一卖一价差百分比大. 下单金额稍微一大, 就不得不把好几档买卖挂单全部吃光. 必然引起大幅滑点.
一定要牢记: 价格越低, 尤其是2元甚至低于2元的股票, 买卖时, 仅仅买一卖一的价差就能产生很大滑点.
市值越小, 从卖五到买五之间挂单金额就大概率越小, 导致一点点钱都会吃光所有价格上的挂单, 产生很大滑点.
除了滑点外, 佣金手续费也是问题, 很多人会故意忽略掉或者设置极小值.
## 第四骗 偷局部
- **故意只放一小段时间表现特别好的回测**
- **常见骗人策略类型: 所有策略**
这种骗人策略也好常见, 很多人策略并没有稳定回报, 于是就只放一小段策略回测, 刚好那一段表现逆天好. 其他时段表现平平甚至一塌糊涂. 一旦看见那些回测时间比较短的策略就要警惕.
## 第五骗 偷成交
- **不设置set_option('order_volume_ratio', 0.02) 和 set_option('match_with_order_book', True)**
- **常见骗人策略类型: ETF价差套利策略**
正常情况下, 经验性的来说, 单个交易者成交量占当日总量达到2%起就开始影响价格了, 会显著增加滑点成本. 很多人不设置这个过滤, 导致自己下单量都超过当天总成交量了而不自知. 这在ETF价差套利, ETF溢价率套利策略里极其常见.
另外一个问题就是实时或延迟模拟盘不开盘口撮合, 结果它总是能在拟合的虚拟K线最高点卖出, 最低点买入. 这导致很多人发的聚宽模拟盘也不可信.
## 第六骗 偷撮合
- **故意设置set_option("match_by_signal", True) **
- **常见骗人策略类型: 涨停板打板策略**
直接忽略停牌股/涨停跌停股/ST股/退市股交易限制强制撮合成交. 比较少见但社区里确实出现过, 有叼毛偷偷开这个设置让自己打板策略总能排到买入. 实盘自然是亏出屎来.
聚宽遇到退市股时, 会在退市最后一天把对应仓位金额全部取出. 但现实里退市股根本卖不掉, 你直接就全部去了老三版几乎等于归零了.
总之都是实盘根本不可能成交的股票, 在回测里强行给撮合了.
## 第七骗 偷时间9:30
- **故意设置9:30或9:31时间点瞬间卖出持仓再买入 **
- **常见骗人策略类型: 微盘股/etf溢价率套利等交易频繁的策略**
由于癌股非常烦人的开盘交易不连续的中断特性(9:25撮合形成开盘价后, 直到9:30的5分钟只能报价排队不能撮合成交, 甚至连预撮合都没有. 2025年了还这样设置真令人费解). 导致癌股在9:30至9:31的一分钟内会从券商涌入大量订单, 并随着网络波动等因素显著随机变化撮合结果. 这一分钟内逐个tick成交价格和量经常有极大变化幅度. 但是, 大部分回测软件和网站都只支持分钟级或者更长长度的小时/日级别回测. 就导致这一整个分钟的成交全部被强行虚拟合成成为了一根现实中不存在的k线. 回测时总能在这根虚拟k线内成交, 但现实中根本没有那么大量给你. 或者因为瞬间价格波动太大你挂的价格被跳过去了产生很大滑点. 这都是普通回测里显示不出来的问题. 网上有大量策略, 只要把交易时间从9:30 改到9:31, 或者9:31再往后改到9:32就收益大降. 这种基本上都是假策略.
## 第八骗 过拟合
- **过度回测精细调参 **
- **常见骗人策略类型: 参数/因子数量很多的策略**
即便有人没有犯以上所有错误, 他写策略也有可能陷入过拟合而不自知. 这在有大量参数或大量因子的复杂策略里非常常见.
**社区里被多人反复修改过的策略要小心, 每个人都改了一点点, 最终出来就是过拟合.(合成谬误)
持股个位数以下的策略要特别小心. 尤其是那些只有2股3股的.
**通常建议是实盘至少持有10股或更多.
机器学习强化学习等算法生产的策略几乎必然过拟合, 要再经过去拟合步骤才能使用.
自写策略时, 首先要确认使用的每个因子都有说得通的经济学解释, 或者至少有个假设. 确保各个因子间的经济学解释不互相冲突.
调参前, 最好单独测试每个因子是否有单调性, 是否有正回报. 然后所有因子等比看看有无单调性, 有无正回报. 再进行调参.
时间序列上的择时, 如果数量足够多, 有统计学可信度最好. 数量较少的话最好能有个经济学解释或假设.
调参最好使用大时间区间避免局部过拟合, 比如从2010年起回测15年, 就远好过针对1年调参. 总结来说就是小容量策略建议10股15年以上回测作为基准进行对比. 中大容量策略建议100股/400股15年作为基准对比. 更大的当然也有, 但社区里的人大概率没这么多钱.
----
偷策略. 这个不计入骗人序列里, 但也很恶劣. 社区里有些人拿了别人写的好策略, 稍微改几个字符, 把作者名字抹掉就乱发. 非常不尊重其他人的努力和贡献.
----
###典型假策略案例:
(注释: 为了避免小心眼屌丝嫉恨. 这里选取的都是社区里长期人品较好的大佬发布的策略. 他们都在帖内公开说了这些策略不可行/实盘不了/是实验. )
- wywy1995 2024-02-11发的"[**极简价投**](https://www.joinquant.com/view/community/detail/0db3cf08cedcc67052ba01fab20f0acf)" 年化53.35%
https://www.joinquant.com/view/community/detail/0db3cf08cedcc67052ba01fab20f0acf
价投策略极易出**夹头**, 这就是个流毒甚久的典型案例. 作者wywy1995本身也不避讳这是个实验性回测, 他把原作者Ahfu的策略改成滑点0, 持股仅1个, 9:30交易. 总之几乎把所有手段都用上了把假年化打到了2015年后50%+的水平.
加正常滑点, 持股数加到2, 交易时间后移到9:32 都能显著拉低收益. 社区里骗积分的脚本小子根本不管这年化为假, 拼命往自己的复合策略里加来改善自己策略表现. 到现在依旧隔几天就冒出来一个人策略里包含这个单股roa假策略.
- 鬼才量化 2025-05-01发的 "**这么好的策略就是成交难上加难**" 年化3627.91%
https://www.joinquant.com/view/community/detail/14ba34cd46ce18c1b26d1a5c7cbb91fb
这是一个典型的实盘无法成交的etf溢价率套利策略. 930交易, 实盘没有量. 这一类假策略在聚宽实在是太频繁了, 这里放了个我看见年化数值最高的. 这个策略也是典型, 9:30时间买卖, 滑点设置成0.001元, 只放了2个月很短一段. 鬼才量化 本人直接公开说了这个策略实盘无法成交, 但写假策略的脚本小子根本不管, 稍微改一改就乱发骗人.
----
还有更多骗术欢迎大家补充.
----
2025年5月9日 修复了研究代码. 添加了回测时间短问题. 修改了股价滑点问题.
2025年5月10日 感谢大家的补充, 又添加了几个典型案例.
2025年6月1日 补充了几个小点.
2025年7月11日 补充了9:30/9:31问题. 添加了典型热门假策略举例.
2025年8月11日 补充回测对比基准.
2025年8月12日 更新了检测代码, 尝试避免自己检查自己代码段导致的误报.
工商目前7元,固定滑点0.02约千3的滑点成本,不是比另外一个要高么;几年前就4元的时候,固定滑点甚至千4,肯定只高不低的。目前我问过交易算法的滑点一般在万2-3左右吧
2025-05-08
只回测10-20笔,截取最好成绩放出来,拉长测成绩就很拉胯
2025-05-08
好像把您的判断部分放在策略后面运行测试根本没用,永远显示“2019-01-01 00:00:00 - INFO -
===== 回测设置检查结果 =====
2019-01-01 00:00:00 - INFO - ⚠️ 警告:使用了固定的滑点金额,这可能不符合实际情况
2019-01-01 00:00:00 - INFO - ⚠️ 警告:开启了 match_by_signal=True,这可能导致虚假撮合, 例如涨停板强制买入”
2025-05-09
贴了代码运行显示不太对,不知道哪里出了问题?
2019-01-01 00:00:00 - INFO - ⚠️ 警告:使用了固定的滑点金额,这可能不符合实际情况
2019-01-01 00:00:00 - INFO - ⚠️ 警告:开启了 match_by_signal=True,这可能导致虚假撮合, 例如涨停板强制买入”
2025-05-09
@YANGDH 谢谢. 我上传了修复后的代码. match_by_signal 一直报错只好先全部移除了
2025-05-09
还有很多骗子,拿别人策略,啥都不改,就自己加点描述,改回撤周期,就发出来
2025-05-09
@归零韭菜 好像不管怎么改,都显示以下内容:“警告:使用了固定的滑点金额,这可能不符合实际情况, 建议使用千分之二滑点 set_slippage(PriceRelatedSlippage(0.002))”
2025-05-09
@苦学 我没招了, 你看看怎么修复吧 改来改去好像都不对
2025-05-09
直接看回测结果,夏普太高(大于5),年化太高,回测周期太短(小于1年),曲线过于平滑,有这些问题的看都懒得看
2025-05-09
偷流动性:忽略停牌股/ST股/退市股的影响
常见策略类型:小市值因子策略
例如:回测中买入次日涨停的小盘股,但未剔除停牌股票(如乐视网)。实盘中停牌期间无法卖出,复牌后连续跌停造成巨额亏损。
偷费率:故意不设置或调低手续费/印花税
常见策略类型:高频交易策略
聚宽默认股票佣金为万分之三,但有人设置为0.0001甚至0。例如做可转债套利的策略,真实手续费应是免5且低至万0.5,但回测中按股票费率计算,导致实盘盈利被手续费吞噬。
过拟合:多人克隆同一个策略进行“优化”
常见策略类型:小市值策略
现在的小市值策略收益让我越来越咋舌,让你点进去一看就会越看越不对劲,时间上的择时、股价的过滤、市值的范围、特定的计算参数、特定的限制期间,无数的“后人”在“前人”在基础上添砖加瓦,很容易调出收益率更好的策略,这也是聚宽被克隆最多的策略之一,但在我这里真的就只有三个字“过拟合”,因为很多东西没有理论支撑,或者说你这种理论是先画了箭再射靶
2025-05-09