Q & A¶
一句话: Lab 里那些听起来像行话的问题,这里用人话再说一遍。本机 mlbot lab 的问答页是同一套问题的细则;这里给人先读。
先记住三句就够用:
- 规则也会骗人,只是骗法不同:挑好看的门槛、好看的一段行情。
- 熊、牛、近窗要分开报。合成一条曲线,会把坏年洗掉。
- 相关扫出来的数不能结案。 结案只看三段五项 KPI,结论你自己写。
规则会不会骗人¶
规则实验还要做交叉验证吗?¶
不用。 不是偷懒,是防骗的闸门不一样。
交叉验证(把时间切成几折,前面练、后面考)是给会记路径的模型用的:树、线性、打分器在一段历史上调了几千个参数,要问「是不是只记住了那段」。这个公开仓没有训练入口。
规则实验没有「先拟合再打分」这一步。假设写死,熊、牛、近窗各跑一遍。问的是:换一种市场结构,这句话还成不成,不是「系数有没有背下训练集」。
规则参数少,就不会过拟合吗?¶
会,只是形态不同。
规则记不住「2022 年某天谁怎么走」。它最多锁住一两个门槛。门槛对了,像抓住一个粗结构;门槛只是这段行情碰巧相关,换市况就废。
规则骗人的方式是:扫一堆门槛、换几个条件、哪段数字顺眼就留哪段。挡法很土:相关扫描不能结案;三段分开看,哪段坏就哪段否;比策略时关掉熔断,别让熔断把回撤藏起来。
模型和规则各防什么?什么时候才要交叉验证?¶
| 模型 | 规则 | |
|---|---|---|
| 本事 | 大,能把一段行情的细节背下来 | 小,记不住整段路径 |
| 骗人的样子 | 训练集很好看,换一段就塌 | 门槛碰巧对了,换市况就废 |
| 怎么挡 | 交叉验证:别只记住那一折 | 三段分列 + 人能讲清机制 |
| 相关扫描 | 选特征的线索 | 同样只是线索,不是证据 |
只有以后真的在训可拟合模型,才在训练里边做交叉验证。结案仍看三段回测。不要把两套尺子叠在一起。
为什么要分三段¶
把牛市熊市合成一条曲线,不是更稳吗?¶
不要合成。 合成会把坏段抹掉,看起来像「长期还行」。行情不平稳时,更长的平均只会把已经失效的规则洗干净。
三段是三种市场状态(跌、涨、近窗震荡),不是把日历切成考试折。就算做了交叉验证,早期折多半是熊、后期折多半是牛,仍然不如明着要求三段同号、回撤不能更坏。
更好的做法:对照变体 × 三段摊在一张卡上,一眼看到哪段翻脸。
三段是什么?Lab 记分卡为什么要摊开?¶
币圈默认三段:
- 熊:2022 年大跌
- 牛:2023–2024 上涨
- 近窗:最近这一段高波动 / 转熊,不是「再平均一次」
头条只报五项:年化、Calmar、胜率、最大回撤、Sharpe。不要用「一共赚了多少 R」当标题。
一行总数通常只是某一次产物(常见是基准 / 熊段)。对照和近窗必须分列,否则震荡翻脸会被熊段数字盖住。Lab 的 /rd 记分卡就是为这个摊开的。
「相关好看」为什么不能当成绩¶
扫相关找出来的因子,以后还会灵吗?¶
相关只说过去同向动过,不保证以后还在。
它不是「模型记住了一条简单规律」。它只是说:在这张表、这个标准答案上,这个数和后面的涨跌一起动过。
如果以后真灵,是因为那个粗关系在下一段还在——故事没变,手续费也吃不完。也可能只是:扫了几百个特征捞到的同号;标准答案和生产目标不是一回事;只在某一种市况里成立。
本仓库用三段分列逼问的就是「隔壁那段还在不在」。过了,比较像抓住了结构;过不了,就是这段样本的相关。
那它是不是记住了某种简单规律?¶
有时你看到的是那个规律的影子,不是因为它记住了什么。
「简单规律」是你写下的假设(拥挤后回吐、超跌后回复、趋势里别在震荡里开)。相关扫描只是这段样本里的同向,和假设长得一样。
- 门槛少、人能讲清、三段同号、回撤不坏 → 比较像抓住了结构
- 只有相关、只看一窗、只看合成曲线 → 当它既没记住、也没发现
所以第一步永远不能结案。这句话写进流程,就是怕你把影子当成证据。
为什么第一步(扫相关)不能结案?¶
量的不是同一件事。
第一步的标准答案,常常是「未来几根会怎么走」。法庭看的是真金白银走完之后的年化、Calmar、胜率、最大回撤、Sharpe,还要扣槽位、滑点、市况过滤。
相关好看的特征,完整回测经常失效:扫得太多、手续费看不见、市况已经变了。数据再长,有时只是把更多已经失效的规则平均进来。
只有熊 / 牛 / 近窗、熔断关掉的那一跑,才能拿去结案。结案结论仍要你读完报告自己写。
前两步是不是在同一份历史上又调又考?会不会过于乐观?¶
会偏乐观,如果你把前两步当成绩。 那两步本来就不是「训练集调参 → 测试集验收」。
| 步骤 | 实际在干什么 | 还是同一段历史吗 |
|---|---|---|
| 第一步 | 在整份表上扫相关 | 是,发现用 |
| 第二步 | 人写下门槛 | 是,定参用 |
| 第三步 | 熊 / 牛 / 近窗回测,熔断关 | 日历大多还是同一段,但量的是另一件事 |
这里没有经典的「留一段没见过的当考场」。规则也故意不做交叉验证。骗人的通道是扫门槛、换条件、哪段好看留哪段。
挡法:第一步不能结案;三段分列,哪段坏就否;熔断关掉。第三步换的是尺子(五项 KPI)和市场结构,不是未来数据。真要再加一份独立样本,更像换一篮子股票,而不是再切一段日历当唯一考场。
要不要留一段「没见过的未来」¶
最后半年当「没见过的考场」,行不行?¶
不要用最后一段替换现在的法庭。
中间空一截,只能挡住「标准答案漏到切点对面」。挡不住你选了一个碰巧好看的门槛。
- 最后一段往往只是一种市况(现在就是震荡 / 转熊)。只用它当考场,等于又退回「近半年漂亮就能过」。
- 第一步若看不到那种市况,会专挑趋势门槛。
- 每一窗都重新搜门槛,是禁止的滚动调参。规则冻死之后往后只重放,那是监控,不是再优化。
想再压乐观,可以在结案后再留一条不再改的尾巴:前面定参,后面只重放一次。尾巴过不了 → 否;过了也不能单靠它过关。三段法庭还在。
空一截是防作弊,为什么还要把时间切成小块?¶
两件事不要搅在一起。空一截防的是答案泄漏;切小块是多问几次「换一段时间还在不在」。
空一截: 模型在左边学,用「未来几根的涨跌」当标准答案。切在某一天、中间不空,左边最后几天的答案已经包含右边开头的行情,分数会被抬高。所以这一刀中间要空出「答案那么长」的时间。
切小块: 模型本事大,整段学可以很好看。只留最后半年考,你只有一个数字,而且那半年可能刚好是牛市。所以训练会多问几次:用更早的一段学 → 看紧接着的下一段还行不行。小块是为了多问,不是为了切断相关。相关仍然靠每次切的那条缝。
规则没有「先学再打同一套分」,前三步都不需要这两样。按月切小块再各搜一次门槛,反而是禁止的滚动调参。规则要的是大块、冻死的门槛:熊 / 牛 / 近窗同一套都过。
用「未来几根涨跌」当标签,就要交叉验证吗?¶
要不要做,看你有没有在拟合,不看标签叫什么。
触发条件是三件事同时在:左边在学、两边打同一套标准答案、中间切一刀。不是「树」或「未来收益」这两个词本身。
这个公开仓没有训练入口。规则是:扫一眼 → 门槛写死 → 事件回测。没有那一刀。
如果以后真的在训树 / 线性 / 打分器,并且标准答案会看未来,才要:
- 空一截:切点两边的答案会重叠,缝至少和「未来几根」一样长
- 删跨界行:哪一行的答案已经用到对面折的行情,就别再拿去学
- 交叉验证:因为你在拟合,要多问几次「下一段还在不在」——跟未来是 10 根还是 3 根无关,根数只加宽那条缝
规则第一步即使用同一个「未来几根」算相关,也不要把这三件套当法庭。相关不算分。法庭是三段走完的路径。
「答案踩进考试卷」是什么意思?¶
说的是这一行的标准答案已经用到了考试那段行情。
比如答案是「未来 10 根的涨跌」。1 号那一行,看的是 1 号到 11 号。现在练习到 100 号,考试从 101 号起。95 号还在练习日历里,但它的答案用到了 95~105 号,其中 101~105 已经是试卷。练习时这道题的标准答案里,已经写进了考试怎么走。
踩进对面: 这一行的答案窗口和考试时间有重叠。
删掉: 这类行不要再拿去学。只留答案完全落在切点之前的行。
和空一截的差别:空一截是两段中间再空几天,两边都不用;删跨界行是在已经划定的折里,把答案越界的那些行划掉。一个是空一段日子,一个是删具体几行。
短周期、大单、高频¶
公开仓有没有现成的赚钱袖套?短周期树还要不要抓?¶
没有现成袖套。 这个仓库是假设验证器,公开练习句是均线金叉,不是一套现网策略店。
短周期树、15 分钟订单流,很容易量出「同时在动」而不是「提前几根」。扣完手续费,常常没剩。不要把「还想抓短的」默认做成再扫一棵树。
若还要做短,必须换成交钟(按成交走,不是按 K 线走),并且先过手续费。已量过的句子见 已量展厅。
大单之后价格会回吐还是续走?能不能先赌一边?¶
两边都要数,而且要切开。 不能先假设「大单后面一定回吐」或「一定续走」。
大单后面叠了两台机器:临时冲击 / 库存(回吐),和信息 / 强平连锁(续走)。混成一个平均,相关会接近 0,看起来像「没信号」。
正确问法:先按规则切开两条腿,看符号是否真的不同;再扣完吃单往返手续费,看剩下来的能不能做。平均路径略偏一边、幅度小于费,这句话就不成立。
我有交易系统和返佣,高频是不是就是工程实现?¶
不是。 普通吃单大约 5bp,账没算错。高频赚的不是「预报两分钟」,而是:点差 + 返佣 − 被打穿 − 库存。
零售挂单经常连 maker 费都不够——BTC 永续点差常常只有一跳。负费率是极大成交量的做市合同,不是把单子改成限价就出现。有下单系统、有特征库、有成交明细,也不等于有队列位置、共置和交易所承认的返佣。
这三项没有时,去做高频 = 用零售费率和慢撤单去接被打穿的那一跳。更近的工程:给自己已经在做的成交算滑点,或量持有型价差(资金费率、期现)。不要为了仿高频再扫一遍特征库。
还想看细则¶
- 本机 Lab:
mlbot lab→/rd/qa - 同一套问题的 YAML:docs/agent/rd_qa.yaml
- 三段日历 · 五项 KPI · 谁写哪一格