Regime 市场环境
环境描述一段时间内影响策略表现的统计与交易条件。
某段行情每天上下大约 5%,你的止损离买入价 2.5%。止损距离是日波动的几倍?
2.5% ÷ 5% = 0.5 倍,只有半天的正常晃动,很容易被碰到。
回测后发现赚钱的交易大多在波动大的日子,于是把「环境好」定义成「波动大」。问题在哪?
先看结果再起名字,等于把答案写进题目。分组规则要事先定,再拿没看过的数据检验。
你的分组用的是「当天振幅」,要收盘才算得出。今天开到一半,价格已经上下晃了 6%。今天归哪一组?
当天振幅收盘才有,拿来决定今天就是偷看未来,回测会比实盘好看。用开盘前已经算好的分组;想用盘中数据,另写一个盘中算得出的口径。
第 1 段 · 先自己想
先自己想,30 秒
先凭直觉答,第 6 段再对答案。
| 去年一段 | 很赚 |
|---|---|
| 今年一段 | 一直亏 |
教学情景,规则没改过
同一条突破规则,一个字没改:去年一段很赚,今年一段一直亏。你想找原因。
先做什么?
提示:「行情不好」能不能写成一个算得出来的数?
选一个,或写一句。这里先不给答案。
- 今年行情不好,等行情好了再做跳过了一步
说不出是哪个数变了,下次就没法事先认出来,也没法验证。
- 先写分组:用哪个数、分界线多少,再按组看结果说得通
比如前 20 天平均振幅,3%、5% 分界。定义写在看结果之前,还要写明什么时候算得出来。
- 把今年亏的交易删掉再看跳过了一步
删掉的正好是要解释的那部分。
方向一样,环境可能完全不同

- 两段行情都在慢慢往上,十天都涨了大约 4%。只看方向,像同一类。
- 再量一下每天上下的幅度:甲段大约 1%,乙段大约 4%。
- 同样在 100 买入,止损放在低 2% 的 98。在甲段,2% 是一天波动的 2 倍,很难碰到。
- 在乙段,2% 只有半天的波动。第 2 天正常一晃,就碰到了 98。
- 同一套规则,甲段拿住了,乙段被扫了出去。不一定是规则坏了,是环境不同。
- 所以事先写好怎么分组,比如前 20 天平均日内范围超过 3% 算高波动。按组记账,不看完结果再改名字。
第 1 / 6 步
画面是教学示意,不是真实行情。看不懂的地方可以直接问:微信 xtony1992(备用 xtony1993)· 电报 @xtony1992
第 2 段 · 大白话
方向一样,路况可以完全不同
环境看的是方向以外的条件:每天晃多大、成交顺不顺、在什么时段。同一套规则,要按事先定好、当时就知道的环境分组检查。
打个比方:下雪天开车
同一条路,同一个方向,晴天开和下雪天开:
- 方向一样都是往东开二十公里,看地图分不出两天有什么差别。
- 路况不同下雪天轮子打滑,平时够用的车距,一脚刹车就追尾。
- 车距换算老司机按路况拉开车距、放慢车速,路线不变。
- 出门前看开不开、怎么开,出门前看天气定;等晚上才知道今天下了雪,就晚了。
行情的方向是那条路,环境是那天的路况。
第 3 段 · 框架
按环境检查一套规则,三步
这一节在总图第 2 站「会读图」:上一节给结构贴标签,这一节看结构以外的路况。波动怎么量,在第 8 节。
- 1
选一个算得出来的环境变量
比如前 20 天平均日内振幅,写清怎么算、分界线多少:低于 3% 算低波动,3%~5% 中等,高于 5% 高波动。
漏了它只会说「行情不好」,说不出是哪个数变了,下次也认不出来。
- 2
只用当时已经知道的数
做决定那一刻,这个数得已经算得出来。当天收盘才有的数,不能拿来决定当天更早的交易;盘中要用,就另写一个盘中算得出来的口径。
漏了它回测偷看了未来,结果比实盘好看。
图 2 · 环境变量要在做决定之前就算得出来读图:横轴是时间。绿色那段在今天开盘前已经结束,红色那段要到收盘才结束。两支箭头是能用和不能用的方向。 结论「今天振幅很大,所以今天不该做」是事后话。只能用当时之前已经知道的数据,比如前 20 天的平均,并把「这个数什么时候可知」写进定义。
- 3
止损和仓位跟着波动换算
把止损写成「日波动的几倍」,波动大了就放宽止损、减少数量,让亏的钱不变;或者按规则暂停这套做法。
漏了它固定 2% 的止损,在每天晃 4% 的行情里只有半天的晃动,第 2 天就被扫。
图 3 · 同样在涨,同样 2% 的止损:甲段碰不到,乙段第 2 天就被扫读图:每根竖条是一天从最高到最低,横虚线是开盘价,红线是止损。拖滑杆挪止损,碰到的那天低点变成红圈。 留意只看方向,甲乙像同一类;换算成「止损是日波动的几倍」,同一条规则在两段里是两回事。
教学示意 · 数字取自快速版止损 2%:是甲段日波动的 2 倍,是乙段日波动的 0.5 倍。
结论乙段被扫得多,不一定是规则错了,而是 2% 在那段环境里只是正常晃动。要比较规则,先按环境分组;止损和仓位要跟着波动换算,或按规则暂停。
第 4 段 · 实战
DOGE 振幅突然变大,同一条止损被扫了几倍
DOGE 2020 年 10 月中到 12 月初的日线。分组事先写死:开盘前算前 20 天平均日内振幅,低于 3% 记低波动,3%~5% 中等,高于 5% 高波动。拿来比较的规则是「每天开盘买,当天跌到开盘价的 97% 就卖」,没算手续费。
留意同一条规则、同一个币、方向一直在涨;按开盘前就知道的波动分组以后,被扫的天数从 21 天 1 次变成 15 天 7 次。
全貌:上半张是 DOGE 日K,红圈是「开盘买、跌 3% 就卖」被扫的日子;下半张蓝线是开盘前就算得出的前 20 天平均振幅,橙线 3%、红线 5% 是事先写好的分界。点按钮一段一段看。
真实行情:DOGE/USDT 日线,现货公开历史数据(UTC)。挑出的片段,不代表概率,不承诺收益。分组口径(前 20 天平均日内振幅 3%、5%)与「开盘买、跌 3% 就卖」都是事先写好的教学规则,未计手续费;09-25~10-14 只用来算第一天的前 20 天平均。
结论这不说明低波动时规则一定更好。它说明比较规则之前,先按事前定义的环境分组;高波动组的结果要单独看,止损和仓位跟着换算,或按规则暂停。
- 1
开盘前 · 每天第一件事
今天归哪一组
每天开盘前,用前 20 天平均振幅定今天归哪组。10 月 26 日那天上下晃了 10.5%,可开盘前算出来的前 20 天平均只有 2.3%,这一天就归低波动组。盘中晃得再大,组也不改。
不用它等收盘看当天振幅再分组,回测里偷看了未来。
- 2
11 月 19 日 · 进了高波动组
止损还放 3% 吗
11 月 19 日起,前 20 天平均越过 5%,进了高波动组。这一组 15 天,平均每天上下 11.3%,3% 的止损只有大约四分之一天的晃动,15 天里被扫了 7 天。
按事先写好的规则:放宽止损、减少数量,让亏的钱不变;或者这一组先暂停。
不用它照用 3%,正常一晃就被扫出去。
- 3
复盘 · 按组记账
这条规则到底行不行
三组摆在一起:低波动 21 天被扫 1 天,中等 14 天被扫 3 天,高波动 15 天被扫 7 天。这段 DOGE 一直在涨,整段涨了 29.9%,差别全在每天晃多大。每组的全部交易和成本都留着,亏钱的那组也留。
不用它一句「行情不好」带过,下次还是认不出来。
- 4
看完结果以后
能不能就此只在低波动时做
看完很容易想:以后只在低波动时做。这是一段挑出来的行情、一次观察,先记成待验证的假设,拿没参与挑选的新数据再看。拿同一批数据发现、又拿它证明,等于没验证。
不用它试几种分法挑最好看的,又回到看完结果再起名字。
第 5 段 · 卡点
最容易卡住的三个地方
「止损放 2%,乙段老被扫,是这条规则太烂吗?」
回去看「止损和仓位跟着波动换算」不一定。2% 是甲段日波动的 2 倍,却只有乙段日波动的 0.5 倍,在乙段只是正常晃动。先按环境分组再比规则,止损写成日波动的几倍。
「亏了就是行情不好,这么说不行吗?」
回去看「选一个算得出来的环境变量」「行情不好」说不出是哪个数变了,下次开盘前也认不出来。换成算得出的数,比如「前 20 天平均振幅超过 5%」,才能事先分组、事后检查。
「环境要收盘才确认得了,盘中还能用吗?」
回去看「只用当时已经知道的数」只能用此前已经完成的分类,或者另写一个盘中算得出来的口径。把收盘后才有的标签套到当天更早的成交上,就把未来放进了决策。
第 6 段 · 讲回去
讲回去:讲得出来,才算学会
讲到哪一项卡壳,那一项就是还没吃透的。
你开头选的、写的
开头没选也没写?直接写下面这一遍。
开头那道题,现在对一下
复述填空
- 环境看的是方向以外的条件,比如每天多大。
- 分组只能用就已经知道的数。
- 止损 2%、每天晃 4%,止损只有日波动的倍。
- 看完结果才给赚钱那组起名字,等于把写进题目。
参考答案:晃 · 开盘前 · 0.5 · 答案。意思对就算对,用你自己的词更好。
看参考讲法
同一条路,晴天和下雪天开法不一样。行情也是,方向一样,每天晃多大可以差好几倍。别说「行情不好」,换成一个开盘前就算得出的数,比如前 20 天平均振幅,事先定好 3%、5% 分界,按组记账。DOGE 那段一直在涨,高波动组 15 天里 3% 的止损被扫了 7 天,因为每天晃 11% 左右。进了高波动组就按规则放宽止损、减少数量,或者先停。哪组更好,要拿新数据再验证一遍。
自测:换一组数字再算一遍
1. 某段行情每天上下大约 5%,你的止损离买入价 2.5%。止损距离是日波动的几倍?
2. 回测后发现赚钱的交易大多在波动大的日子,于是把「环境好」定义成「波动大」。问题在哪?
3. 你的分组用的是「当天振幅」,要收盘才算得出。今天开到一半,价格已经上下晃了 6%。今天归哪一组?
想再想一想?展开问题与笔记(可选)
某段行情每天上下大约 5%,你的止损离买入价 2.5%。止损距离是日波动的几倍?这说明什么?
笔记仅保存在当前浏览器展开参考思路
2.5 ÷ 5 = 0.5 倍,只有半天的正常晃动,很容易被扫。可以按事先的规则把止损换算成日波动的倍数、同时减少数量让金额风险不变,或者按规则在这种环境里暂停这套做法;不要看完结果再决定。
进阶:按当天振幅分组,看起来更准给想多走一步的人,不算在这一节的阅读时间里
环境变量最容易出错的是「什么时候算得出来」。很多看起来很准的分组,悄悄用到了当天收盘后才有的数。同一段 DOGE,换成按当天振幅分组:
真实行情:DOGE/USDT 日线,现货公开历史数据(UTC)。挑出的片段,不代表概率,不承诺收益。与图 4 同一段、同一套 3%、5% 分界;上面一行每天开盘前可知,下面一行要当天收盘后才知道。
结论当天振幅分组看起来更「准」,因为它用到了当天的全部信息;可盘中做决定时它还不存在。回测里用它分组,好结果有一部分来自偷看了未来。
环境分组也会过拟合:变量试得越多、分界线调得越细,越容易在样本里找到一组「好环境」。分组先定,少而粗,再用没参与挑选的新数据检验。