本章重点 · 现代事件
事件在现代市场的表现
第15章 事件在现代市场的表现正文
15.1
经典事件判据在现代市场中的适用范围
SC、AR、ST、Spring、SOS、LPS、UTAD 这一整套名字,是在人工报价、电话下单、收盘之后才有完整成交记录的年代里定下来的。定名字的人看到的图,是用纸带上打出来的数字一格一格画上去的。到今天,撮合从几分钟缩短到几微秒,下单的主体从人换成了程序,同一只股票的成交分散在几十个场所,一笔机构委托被切成几百个碎片匀速投放。
在这样一个几乎每一层都换过的环境里,那套名字还能不能用,是一个必须逐条回答的问题,不是一个可以整体表态的问题。整体表态有两种,一种说“经典的东西永远有效”,一种说“这些形态早就失效了”,两种都省掉了检验,而检验恰恰是唯一有用的部分。
回答这个问题有一条现成的分界线:判据描述的是处境,还是描述的是长相。凡是说“谁在什么处境下必须做什么”的,都还成立,因为处境来自流动性的物理性质,不来自年代。凡是说“这件事在图上应该长成什么样”的,都要重新校,因为长相取决于成交怎么被切分、被记录、被画出来,而这几件事全都变了。
先说站得住的部分。结构的顺序没有变:趋势停止,区间换手,最后测试,确认接管,趋势展开。它稳定的原因跟技术无关,跟撮合速度也无关。一笔资金只要规模相对于市场深度足够大,它就必须分批完成,就必须制造条件让对手方愿意成交,就必须在图上留下痕迹(1.2)。撮合快了,改变的只是每一批怎么执行,不改变一共要分多少批,也不改变每一批都得有人卖给他这件事。
这条约束还带着它自己的边界,用之前要知道边界在哪。如果一个品种深度足够好、没有任何一笔资金能对它构成这种约束,那它的走势本来就更接近无数独立决策的统计结果。区间和突破依然会出现,但那是均衡与失衡的自然形态,用事件的语言去逐个对应容易过度解读(1.9)。这一条和年代无关,几十年前的超大盘股同样如此,只不过现在符合这个描述的品种更多了。
收盘位置的含义也没有变,而且它的权重上升了。收盘价是全天所有成交的净结果,一笔成交无论发生在哪个场所、被拆成多少碎片、走的是明面撮合还是券商内部化,它对最后那个价格的贡献只有一条路径:要么推动价格,要么没有推动。碎片化改变的是成交的分布形态,不改变净结果(1.6)。收盘落在当天振幅的哪一段,记录的仍然是收工时候是谁站住了脚。
它的权重上升不是因为它自己变强了,是因为周围那些证据被削弱了,而它没有(14.1)。这个区别值得分清楚:一件事的相对重要性提高,可以来自它变好,也可以来自别的变差,两种情况下你对它的信任程度应该不一样。收盘位置属于后一种,所以它该被放到判断的前排,但不该被当成一条可以单独下结论的证据。
量的相对比较同样站得住。这套方法的核心判据没有一条依赖绝对数值:SC 是“近期最大量”,ST 是“明显小于 SC”,Test 是“小于 Spring 的下刺那一根”,No Supply 是“比前面几根都小”。每一条都是两个数在比,不是一个数在跟某个固定门槛比。
成交量数据的那些毛病,包括口径不完整和大单被拆碎,也包括时段差异巨大、内部化改变了痕迹,几乎全是系统性的、持续的。同样的失真比例被乘在参与比较的两个数上,比出来的倍数不受影响(11.7)。前提只有一条,两次比较必须同源同口径。无论换掉数据源、合约还是时段,失真都约不掉了,而这一条在 24 小时品种上最容易被违反(15.5)。
事件之间的因果链也是机制,不是统计规律。SC 之后必有 AR,因为集中的卖压被清空之后,市场上暂时没有人急着卖,剩下的买盘哪怕不多也足以把价格推上去(5.1)。Spring 之后必须收回,因为收不回来它就不叫 Spring,那只是一次真突破。SOS 之后应该有 LPS,因为价格快速离开一段没有充分换手的区域之后,缺席的那一方还在等,价格要回来给他们一次参与的机会(12.1)。
这三条描述的都是撮合层面必然发生的事,参与者换一批不改变它们。它们的用处是给判断提供一个可以被证伪的下一步:你说这是 SC,那接下来必须有 AR,没有 AR 就说明前面那一根不是 SC。用机制去推下一步,比用形态去认下一步可靠得多,因为机制不会因为图被画成什么样而改变。
变了的部分全部集中在另一头,也就是“长什么样”这一层:一根 K 线的形状,盘中走到过的极值,盘口上挂着多少,确认要等几根。这几样在过去几十年里被当成事件的识别特征使用,而它们恰恰是最依赖记录方式的东西。把它们和上面那几条混在一起用,是现在最容易出问题的地方——一个人可能非常准确地认出了处境,却因为长相不对而放弃;也可能因为长相对了就进场,而处境根本不支持。
15.2
单根 K 线形状与盘中极值的使用限制
一根日线给你四个数字加一根量柱。这四个数字现在的可靠程度已经不一样了:收盘还能用,开盘在有跳空的品种上还能用,最高和最低这两个越来越不能单独用,而振幅是由最高最低算出来的,跟着一起打折。原因不是数据错了,是造成极值的成因变多了,而图上只记录“到过”,不记录“为什么到过”。
极值可以由一笔不大的成交造成。举一个具体的。某个合约在午间时段,买一 4,145 挂 40 手,买二 4,144 挂 30 手,再往下三档加起来不到 60 手。这时候一张 200 手的市价卖单打下去,一路穿过这几档,最新价落到 4,141,当天的最低点就变成了 4,141。
整个过程一共成交 200 手,而这个合约一天成交二十万手。日线画出来,那根下影和一次几千手的恐慌抛售留下的下影完全一样长,一样显眼。你在图上看到的是一次“跌破下沿又收回”,实际发生的是午间没有人挂买单。这两件事在图上无法区分,只能靠别的证据分。
不同数据源给出的极值也不一样。美股的成交分散在几十个场所,你图上那个最低价来自哪一笔、发生在哪个场所,取决于数据商的合并规则(11.2)。经纪商报价的现货更直接:极端行情里点差会扩张到平时的十倍以上,报价流里会出现只在这一家平台上存在的假刺。
关键影线应在第二个数据源中核对;若另一数据源没有该影线,就不据此认定事件(11.6)。这一步可以减少因单一数据源异常而误认 Spring 的情况。
还有一层是极值被主动制造出来的。结构低点之下堆着一批止损,这批止损在被触发之前不存在于挂单簿里,它躺在条件单系统中,对所有观察工具都不可见(11.4)。把价格推下去几个跳、触发那批止损、再用触发出来的卖单接货,这件事对一个有规模的参与者来说成本很低,尤其在深度本来就薄的时段。这一下留下的极值不是供求的痕迹,是一次采集流动性的动作留下的痕迹(13.6)。
结论不是极值不能用,是极值不能单独用,它必须配一个“接下来发生了什么”。一次下刺要成为证据,需要三件事同时成立:下刺发生在事先标好的结构位上;下刺当时的成交带着止损被触发的特征,也就是连续、小额、方向一致、时间高度集中;下刺之后有规模不小于清扫本身的反向成交,把价格快速收回(13.6)。三件缺一件,那个极值就只是一个到过的价格,不是一个事件。
单根 K 线的形状要另外说,因为它有一个更基础的问题:K 线的边界是时钟切出来的,不是市场切出来的。同一段行情,日线切在纽约下午四点和切在芝加哥下午五点,画出来的形态可以完全不同——一根漂亮的锤子线,换一个切点会变成前一天收在低位加今天一根普通阳线。你在其中一张图上标的事件,在另一张图上不存在。
交易所股票有真正的开盘和收盘,这个问题还算小,因为切点是由交易时间定的,不是由谁的设置定的。到了 24 小时连续交易的品种上,切点就纯粹是一个设置项,形态跟着设置走,同一段行情在两个人的屏幕上可以是两回事(15.5)。
突破那一根的形状还要再打一个折扣,因为它被算法放大了。跟随类策略在突破触发的瞬间同向下单,这批成交在几毫秒到几秒之内完成,它们推出来的振幅和速度,比真实的力量对比更极端(11.6)。所以突破当根“很有力”这个印象是不可读的:那根 K 线的长度里混着一批不带任何方向判断的执行流。处理办法是把定性推迟到突破之后的第二、第三根,看价格能不能守住(7.4)。
至于 Pin bar、吞没、Inside bar 这一类按形状命名的东西,它们本身不含任何机制信息。同一个形状出现在区间下沿和出现在区间中部,结论可以完全相反,而形状本身对这个差别一无所知(14.2)。把形状当成信号来源,等于把一个必须靠位置才能确定含义的东西,当成了一个自带含义的东西。
被削弱的这几样,替代品是有的,而且是现成的,只是从前没有被放在第一位。第一样是量落在这一根的哪一段,而不是这一根的量有多大。放量而成交集中在 K 线上部、价格推不上去,是有人在上方挂限价单承接;同样大的量集中在 K 线下部,那只是价格从下面上来时的正常推进,什么信号也不是(13.5)。有成交量分布或者 Footprint 的品种可以直接读出来(12.2),没有这层数据的,用收盘位置去近似(7.1)。
第二样是回撤的深度。一次回撤跌回了前一段推进的多大比例,这是一个比值,不是一个形状,它不受切点影响,也不受数据源影响,因为它由两个摆动点算出来,而摆动点是一段行情的结果,不是某一个瞬间的报价。回撤不超过前一段推进的三分之一,说明持有者不愿意在这个价位交货;跌回一半以上,说明推进那一段里的买盘大部分是浮动的,随时会变成卖单(1.3)。
第三样是收盘位置的三分法,理由在 15.1 已经说过。这三样合起来,能覆盖掉从前由形状承担的大部分工作,而且它们互相独立:量的分布说的是谁在承接,回撤深度说的是筹码的性质,收盘位置说的是谁控制了收工。三样同时指向一个方向的时候,你有的是三条证据,不是同一条证据的三种说法。
把三样合在一起用一次。某只股票在区间下沿 28.40 一线横了六周,区间上沿在 30.20。第七周某天最低到 27.85,收在 28.62,当天成交量是二十日均量的 2.3 倍。单看这根 K 线,是一根长下影的放量 K 线,形状很好看,但形状不参与判断。
先看量落在哪里。把当天的成交按价位摊开,28.40 以下只成交了当天总量的一成七,其余八成三发生在 28.40 之上,其中一大半集中在 28.55 到 28.70 这一带。这说明下方那一截是在几乎没有人接盘的真空里滑下去的,真正的换手发生在价格收回来之后,这一条支持 Spring。
再看收盘位置。28.62 落在当天振幅 27.85 到 28.70 的上四分之一以内,买方控制了收工,这一条也支持。第三条是收回的力度要跟下刺的深度相称:这次跌破下沿 0.55,占区间高度 1.80 的三成,属于跌得比较深的一类,按 5.3 的口径接近 Spring #1。那么仅凭当天这一根收回还不够,后面需要一根放量的、收在上端的 K 线把价格推回 28.40 之上并且站住。
两条支持、一条待定,结论是“可能是 Spring”,先按半仓准备,等第二根出来再补(4.7)。整个判断过程里,那根下影有多长这件事,一次也没有被用到。这就是把形状换成机制之后的样子:结论可能和从前一样,但支撑它的东西换了,而换过之后的那几条,在今天的市场里还能站得住。
15.3
确认能给的时间变短了
从前的标准是三根 K 线:一个事件打出来之后,给它三根的时间去证明自己成立,三根之内没有做到就作废。现在这个数字通常是一到两根。这个变化不是一条需要背下来的新规矩,它有具体的成因,知道成因才知道它什么时候不适用。
第一层成因是执行链条被抽掉了。过去,从形成判断到提交订单,要经过看盘的人、一通电话、一个交易员、场内的一次撮合,中间每一段都以分钟计。今天从触发条件成立到成交完成是毫秒级,而且做这件事的不是人,不需要犹豫,也不需要跟谁确认。
第二层更要紧。同一个结构位上,现在盯着它的策略数量比从前多一个数量级,而且这些策略的触发条件高度雷同——前低之下、前高之上、整数关口、明显趋势线的外侧,就那么几类。一批条件几乎相同的自动指令挂在同一个位置,触发之后会在同一秒里一起动。原来需要几天才能走完的“卖压释放、承接、收回”,现在可以在几分钟里走完,因为这三步里的每一步都不再需要人做决定。
第三层是信息扩散。从前一条消息传到所有参与者手上要一整天,所以“第二天大家想明白了才跟进”是有物理基础的。现在这个基础没有了:消息出来的同一秒,所有会对它做反应的程序都已经做完了反应。缓慢确认这件事,不是变得不流行,是它赖以存在的条件没有了。
但有一件事必须和上面分开:变短的是确认所需要的时间,不是消化卖压所需要的时间。这两件事经常被混在一起,混起来的后果是所有事件都套同一个窗口。一次真正的大规模卖压释放,需要的是有人把这些货全部买走,而这件事受限于对手方的资金和意愿,跟撮合速度毫无关系。SC 那一天砸出来的几百万股,不会因为撮合从秒级变成微秒级就更快被吃掉。
所以窗口的长短应当与事件打出来的量相称(5.3)。用同一个区间下沿走两遍就很清楚。下沿在 4,145。第一种情形,价格下探到 4,143,全程成交 1,200 手,两根 5 分钟 K 线之内收回到 4,148 之上。这是 Spring #3,触发的止损有限,承接不需要多少钱,两根之内没收回就该作废。
第二种情形,价格下探到 4,118,一路成交 34,000 手,其中大部分是几手十几手的小单,密集地打在一起。这是 Spring #1,你不能要求它两根之内回到 4,145 之上。34,000 手的货需要有人分批接完,接的过程本身要花时间,图上通常表现为价格在 4,120 到 4,138 之间反复了一整个交易日,低点一个比一个高,量一根比一根小,然后才有一根放量的阳线站回 4,145。
给它两根的窗口,等于要求一件物理上做不到的事,结果是你会把所有 Spring #1 系统性地过滤掉,而那恰恰是后面涨得最多的一类(5.3)。这种错误在日志里很难被发现,因为它不产生亏损记录,它只产生一连串“看对了但没做”的空白。
反过来的组合更危险:快速的事件配缓慢的确认。Spring #3 给五根窗口,等于允许它跌下去之后慢慢磨,而慢慢磨这件事本身就说明下方没有那个不计成本的买方。这时候你所谓的“确认”,确认的是一个已经不成立的判断。你在等一个越等越不该等的东西,而且等的过程中价格离你的止损越来越近。
所以正确的写法不是“N 根 K 线内未确认即作废”,而是“确认所需的时间应当与事件规模相称”。规模用两个数衡量:下刺的深度占区间高度的比例,以及下刺那一段的成交量相对于同时段基准的倍数(11.7)。两个数都小,窗口就短;两个数都大,窗口就长。
一大一小的时候取长的那个,理由是两种错误的代价不对称。窗口开长了,代价是进场价差一点,因为你多等了几根,价格已经离开了最好的位置;过早作废,代价是整轮行情。前者是一次可以量化的小损失,后者是一个不会出现在账户里、但确实发生了的大损失。
还有一个常见的误用要单独挡一下:窗口变短不等于要看更小的周期。日线级别的判断,“一到两根”指的是一到两根日线,也就是一到两天,不是一到两根 5 分钟。你的持仓周期是几天,确认就在日线上做。把窗口变短理解成“降到 5 分钟去找确认”,等于用低一层的噪声去判定高一层的事件,而低一层的噪声永远是充足的,你想在 5 分钟图上找到任何方向的证据都一定找得到(3.3)。
窗口变短对操作方式的要求只有一条,而这一条是现代市场对操作最实质的改变:全部判断必须前置到盘前完成。盘中没有慢慢想的余地。价格走到关键位的时候,你能做的只有对照——剧本已经写好,进场价、止损价、仓位大小、目标位全部算完,还有一条“什么情况算这次判断不成立”,信号出现直接执行(18.1)。
预案需要包含作废条件,否则持仓后容易按盘中变化临时放宽标准。作废条件应在进场前写明;进场后如果需要修改,必须记录修改理由,并按新风险重新计算是否继续持有。
盘中不产生新的判断。出现了预案之外的情况,正确的动作是不做,而不是临时想一个新判断然后按它下单。这一条听起来像纪律问题,其实是时间问题:一个临时产生的判断,你没有时间验证它,也没有时间给它算止损和仓位,它在你手上的成熟度远低于任何一个盘前写好的剧本,而它要面对的却是同样快的市场。
最后一个例外要留在这里:确认窗口在极低流动性的时段里根本不成立。一到两根 K 线的窗口,假定了这一到两根里有足够多的成交去说明问题。这个假定在美国时段成立,在亚洲时段的很多品种上不成立——那里的一到两根 K 线可能只有几十手成交,它既确认不了什么,也否定不了什么(15.5)。
15.4
经典事件判据的逐项调整
把上面两条线索合起来,就可以一个一个事件地检验:它的哪一部分判据描述的是处境,哪一部分描述的是长相。
SC 的判据有两条,量必须是近期最大,收盘位置决定成色(5.1)。量的这一条是相对比较,可靠,前提是“近期”的口径事先定死并且同源同口径。收盘位置那一条比从前更可靠。不再可靠的是识别方式——从前 SC 是“那一天的图看一眼就知道出事了”,现在有大量的单日巨量并不来自恐慌,而来自指数调仓、期权到期日的对冲平仓、被动基金的申赎(11.3)。
一根量最大的 K 线,可能只是当天有一只指数基金要按收盘价买入两百万股。区分办法很省事:看这一根的量是在哪个时段打出来的。恐慌抛售的量铺在整个交易时段里,并且集中在下半段,因为卖出是一批一批被逼出来的;指数调仓的量高度集中在收盘竞价的那几分钟里,白天平平无奇。把这一根的分时量柱调出来看一眼就分得清(11.7)。
期货上还多一条旁证:SC 那一根如果伴随持仓量明显下降,说明是老多头在被清出去,这跟 SC 的定义完全吻合,而且它独立于价格形态(11.4)。要注意持仓量是收盘后统计、隔一天才公布的,它只能做事后确认,不能拿来实时判断,所以它的用处是在你已经标了 SC 之后,第二天给这个标注加一分或者减一分。
SC 还有一个变化和长相有关。现在的恐慌释放经常在正常交易时段之外完成:一条消息在收盘后出来,价格在盘后和次日盘前走掉大部分跌幅,正式开盘的时候最低点已经过去了。日线上看到的是一根跳空低开然后收上来的 K 线,而不是一根宽振幅的长下影。这不改变 SC 的性质,改变的只是它在图上的样子。处理办法是把跳空计入振幅——从前一天的收盘算起,而不是从今天的开盘算起,收盘位置的三分法也按这个口径去分(7.2)。
AR 是这一组里最不受影响的一个。它不看量,它是一个价格现象:卖压被清空之后,暂时没有人急着卖,买盘哪怕不多也足以把价格推上去(5.1)。这个成因跟撮合速度、跟数据口径都没有关系,所以它的判据一个字都不用改。
变化只在速度上。从前 AR 要走几天到几周,现在经常两三根日线之内就完成,甚至在一天之内走完。这对“AR 的高点定义区间上沿”没有任何影响,那条线照画(5.1)。受影响的是“AR 中段量能一根一根往下掉说明推力在减弱”这条读法——AR 只有两三根的时候,你根本没有足够的 K 线去读出一个量能序列。
替代办法是降一层,用小时线读同一段的量能形状;不想降层的话就干脆不读,只取 AR 的高点和幅度这两个数,它们本来就是这个事件里最有用的部分。AR 冲得很高、几乎把前面那段下跌吃掉大半,说明买方的力量比想象的强,后面的结构往往更陡、时间更短;AR 只弹了一小段就停住,说明上方压力很重,这个区间大概率要磨很久。这两条读法一点没变。
ST 的全部意义在成交量必须明显小于 SC,这是纯粹的相对比较,不受失真影响,完全可靠(5.1)。不可靠的是“ST 是一根 K 线”这个印象。理想的 ST 本来就是一个序列,头两根还带着量,接下来几根迅速缩量,低点不再往下移,最后一根是很窄的小实体、量很小、收盘偏上。现在这个序列更短,两三根就走完了,要看得更快一点。
ST 还有一个变化值得单独提:跌破 SC 低点的 ST 现在比从前常见得多。SC 的低点是全市场最显眼的止损堆积位之一,因此被扫是常态而不是意外。“跌破的 ST 必须收回”这一条不变,但“轻微跌破”的口径要放宽。从前几分钱算轻微,现在要按比例来定:跌破幅度不超过区间高度的百分之十,都还在轻微的范围内。用固定的分钱数去卡,你会把大量正常的 ST 判成结构失败。
Spring 是被算法环境改变最多的一个事件,同时也是核心机制最没有变的一个。它的全部意义是把浮动筹码清出来然后接走(1.3),成立的证据是“清扫之后有人接”——反向承接来得快,规模不小于清扫本身,价格快速收回(13.6)。这三条描述的是处境,一个字都没有过时。
变了的第一条是下刺的形状不能再用来分级。从前按跌破深度分 #1、#2、#3,隐含的假设是跌得越深说明触发的止损越多、卖压越大。现在这个假设弱了很多,因为算法可以用很小的成本把价格推下去很深:在薄流动性的时段里,几百手就能穿过好几个价位。
所以分级要改成按下刺那一段的成交量分级,深度只作参考。本课程先用下刺段成交量除以同时段基准作为分级示例(11.7):倍数在 1.3 以内且深度较浅时按 #3 记录,1.5 到 3 倍按 #2,3 倍以上且伴随明显深度时按 #1。正式阈值需要按品种、时段和数据源校准。分级定下来,确认窗口跟着定(15.3),这两件事是连着的,不能一个按新口径、一个按老习惯。
变了的第二条是 Spring 现在经常出现两次。第一次扫掉一批止损,价格收回,然后几天之内再扫一次更深的。成因很直接:第一次收回之后,一批新进场的买盘会把止损放在第一次的下刺低点之下,那里立刻形成一个新的、更密集的堆积位,而这个位置比原来的区间下沿更值得去扫,因为堆在那里的仓位刚建立、成本贴着现价、扛不住(1.4)。
所以“Spring 一出来就满仓”是现在最贵的一个动作。处理办法是分批:Spring 确认之后建立一半,等 Test 完成再补另一半(16.3)。这个做法还有一个附带的好处,就是第二次清扫真的来的时候,你手上有余地,可以把它当成第二个进场点,而不是一次必须扛的回撤。
Test 的三条标准——量小于 Spring 的下刺、低点不再往下、振幅收窄——全部是相对比较,全部可靠(5.4)。变化是 Test 出现得更快,经常紧跟在 Spring 后面第二根。这反而是好事,因为 Test 是这套方法里性价比最高的进场位置。
真正的麻烦在另一头:Test 有时候完全不出现,价格从 Spring 直接走掉,而这个比例现在比从前高。这也是上一段那个分批做法的另一半理由——把“等 Test”从进场的条件改成补仓的条件,Test 来了你补仓,不来你也已经有半仓在手,两种情况都不会踏空。
SOS 是这一组里变化最大的,而且方向是变差。它的定义是宽振幅、放量、收在上端、跨过区间上沿(5.5),问题在于这几样现在全被算法放大了。举一个具体的:某个合约区间上沿 4,190,价格在 4,188 附近磨了两天,某一根 5 分钟 K 线跨过 4,190,五分钟内成交 12,000 手,最高冲到 4,203,收在 4,201。从形状上看,这是一根教科书式的 SOSbar。
但这 12,000 手里有多少是带着方向判断进来的?突破触发的空头止损买单,突破跟随策略的自动下单,做市商在快速行情里的对冲,这三样加起来可以占掉大部分。它们有一个共同点:都不打算持有。止损单平完就没有了,跟随策略的持仓周期是分钟级,做市对冲会在深度恢复之后解掉。
所以突破当根的量证明不了“新的买方进场了”,它只能证明“这一段价格移动的成交量很大”,而这两句话的差别就是整个判断。可靠的替代判据有两条。第一条是突破之后价格能不能守住:把定性推迟到第二、第三根,看有没有跌回 4,190 之下(7.4)。第二条只有期货有——突破那一段如果成交量放大而持仓量不增,说明推动突破的主要是空头回补,不是新的买盘,那么后面的 LPS 要按更严格的标准要求(11.4)。
SOS 和 UT 需要后续走势确认(5.5)。突破当根的成交构成较难判断,因此本课程把定性推迟到后续确认。突破当根进场是否具有负期望,需要用同一品种、同一规则和费用后的样本验证,不能只凭单根 K 线确定。
LPS 是这一组里在现代市场中表现最好的一个,应该获得更高的权重。理由在它的判据形式上:回踩的深度和回踩时的量,两个都是比值,不依赖单根形状,不依赖盘中极值,也不依赖任何一个时刻的截面。
深度用比例衡量。回踩跌回突破那一段推进幅度的三分之一以内,是标准的 LPS;跌回一半还能收住,是打折的;跌回突破位之下并且站不回去,突破作废(5.5)。量要缩,缩量同样是相对比较,跟突破那一段比,或者跟同时段基准比。两个条件都满足,你拿到的是一个位置明确、止损位明确、逻辑完整的进场点。
LPS 的变化只有一条,但这一条直接决定你怎么挂单:它出现得更快,而且经常只有一根。从前 SOS 之后可以有几天的缓慢回踩,你有充足的时间在预期的位置上挂好限价单等着;现在经常是突破之后第二根就回踩到位,然后头也不回地走掉。在预期回踩位挂限价单等着的做法,现在有相当一部分单子等不到(15.6)。
UT 和 UTAD 是镜像事件,同样加速,但有一处不对称必须单独说。顶部本来就做得更快、动作更隐蔽、给的进场窗口更窄(6.6),算法环境把这三条全部放大了。UT 的判据是冲出上沿又掉回来,掉回区间中部才算成立(6.3),这个过程现在可以在一个交易时段之内走完,你在日线上看到的可能只是一根带长上影的 K 线,而整件事已经结束了。
UTAD 有一个变化和交易时段直接相关,值得记住。UTAD 的上冲现在经常出现在流动性最好的时候——美国时段开盘后的半小时,或者一条重要数据发布之后的十几分钟。原因不难推:派发方需要有足够多的人愿意在高位接手他的货,而这样的人只在成交最活跃、消息最热闹的那一段时间里大量出现(1.3)。
冷清的时段容纳不下一次真正的派发。他挂上去的卖单会没有人吃,价格反而会被他自己压下来,那不是派发,是自己给自己制造一个更差的均价。所以观察 UTAD 要盯主时段,一次发生在午间或者亚洲时段的“上冲回落”,多半只是流动性不足,不是派发。
至于在 UT 当下做空为什么老被扫,这个问题现在更严重(6.3)。UT 高点之上是全市场最密集的止损堆积位之一,而扫这个位置的成本很低,扫完之后还能顺手拿到一批被迫平仓的空单当对手盘。处理办法没有变,不在 UT 当下做空,等 LPSY。
SOW 和 LPSY 受的影响最小。SOW 是跌破加放量并且收不回,LPSY 可表现为反抽至原 Ice 区域后无法重新站稳(6.4),它们的判据全部建立在“能不能站回去”这个二元事实上,而这个事实不依赖形状、不依赖极值、不依赖单根的量。要调整的只有两处:观察窗口跟着变短,以及反抽的高度要用比例衡量,不用绝对点数。
把上面这些收成一张表,左边是原来的判据,右边是今天要怎么改。
表格 01
手机端将按各列内容分项显示
看这张表要注意一件事:右边那一列改的几乎全是量的基准和确认的时间,判断的逻辑一条也没有改。作废条件的实质是“什么样的盘面行为宣告这个判断不成立”,行为本身没有变,变的只是它发生的速度和它在图上留下的样子。
同一个事件在不同的市场状态下用法不同,这一条和年代无关,但在事件加速之后它的分量更重了,因为你没有时间在盘中重新想一遍。上涨趋势里出现的 Spring,通常是一次回撤的下刺,是趋势内部的买入机会,作废条件可以放宽一点;下跌趋势里出现的 Spring,大概率是下跌中继,应该放弃或者严格降档;只有区间里的 Spring 才是标准事件。状态的结论写在当天预案的第一行,之后所有动作从它推导(18.1)。
表格 02
手机端将按各列内容分项显示
状态之间怎么切换,判据在 2.6:区间转趋势以“突破加确认”完成,趋势转区间以停止行为完成。切换期间一律按转换期处理,不预判。转换期是一年里最容易亏钱的一段时间,因为两套战术在这里都不适用,而人在这里最想动手。
15.5
24 小时连续交易品种的事件界定
这套事件的全部定义里,藏着一个从来没有被写出来的前提:一天有开盘和收盘。SC 是“那一天”的最大量,收盘位置说的是“那一天”收工时的结果,ST 是回到那个价位的“第二天”,确认窗口数的是“几根日线”。这个前提在交易所股票上完全成立,在有明确交易时段的期货上勉强成立,在现货外汇、现货黄金和加密货币上根本不成立。
不把这个前提补上去就直接套用,得到的结论会是错的,而且错得很自洽——图上确实有一根长下影,确实有一根“最大量”,你的每一步推理都对得上判据,只是判据背后的那个“一天”根本不存在。这类错误最难自己发现,因为它不在推理里,在前提里。
问题有三个,一个比一个深。第一个是日线的边界由人来定。某个平台按服务器时间零点切,另一个按纽约下午五点切,两种切法画出来的日线不是同一张图。同一段行情,在一张图上是一根长下影的锤子,在另一张图上是前一天收在低位加今天一根阳线。你在其中一张上标的 SC,在另一张上不存在。
第二个是没有真正的收盘。收盘位置之所以有分量,是因为一天结束的时候双方都已经做完了当天能做的全部事情,最后那一笔是这场拉锯的净结果(1.1)。连续交易里那个时刻的价格只是某个任意时刻的价格,它两边的成交是连着的,没有“收工”这件事,所以那个位置不承载任何“谁站住了脚”的信息。
第三个是时段之间的流动性差着一个数量级。亚洲时段的成交量可能只有美国时段开盘半小时的百分之几(11.4)。同一个动作——跌破下沿、放量上冲、快速收回——在两个时段里的含义完全不同,因为造成它所需要的钱差了两个量级。
处理的总原则可以用一句话说完:用时段代替日历日,用主时段的收盘代替日收盘,用同时段的基准代替全局基准。具体分为四项。
第一条,先把这个品种的时段结构定下来,写死不改。外汇和黄金按三段分:亚洲时段从东京开盘到伦敦开盘前,欧洲时段从伦敦开盘到纽约开盘,美洲时段从纽约开盘到收盘。期货按交易所的日盘和夜盘分,中间那个休市窗口是天然的边界。
加密货币没有天然的时段,但它有事实上的活跃窗口。把过去三个月的逐小时平均成交量画成一张图,会看到明显的两到三个台阶,通常对应亚洲上午和欧美重叠的那几个小时,按这几个台阶切就可以。定下来之后不要再改,因为改切法会改变你看到的一切形态,而这个改变和市场毫无关系。你把换尺子产生的变化当成了新东西。
第二条,指定一个主时段,用它的结束时刻作为日线的切点。黄金和外汇的主时段是纽约时段,多数加密品种的主时段是欧美重叠的那几个小时。切点定在主时段结束的那一刻,好处是每一根日线的最后一笔成交都发生在流动性最好的时候,收盘位置才恢复它原来的含义:它记录的是当天真正参与的那批人在收工时的净结果,而不是某个没有人在场的时刻的报价。
这一条还需要在平台中完成对应设置。多数图表软件支持调整日线的起始时间,改完之后你的日线和别人的不一样,讨论的时候要说明(11.5)。这个麻烦是值得的——你换来的是收盘位置这条证据重新可用,而在别的证据普遍被削弱的环境里,这条证据的分量比从前更重(15.1)。
第三条,事件必须发生在流动性正常的时段才算数。这是整套调整里最能省钱的一条。举一个具体的:某个外汇对在区间下沿 1.0820 横了两周,亚洲时段的某个小时价格跌到 1.0808,然后收回 1.0824。图上看,这是一次干净利落的 Spring——刺穿下沿,快速收回,收在上端。
切到量上去看。这个品种本身没有真成交量,量要到对应的货币期货上取(11.5),那个小时期货合约成交 340 手,而它自己在这个时段过去二十天的平均是 1,100 手。也就是说这次“下刺”发生的时候,市场上几乎没有人在。那一下不是清扫,是那个时刻下方根本没有人挂买单,一笔不大的卖单就把价格推穿了下沿。
判定规则需要写成可检查的数字。本课程先以事件时段成交量低于该时段 20 日均量的 30% 作为过滤示例,并等待下一段流动性恢复后再判断(11.6);正式阈值需要按品种和时段验证。等到那个时段之后,价格如果还站在新的位置上,才承认结构发生了变化;流动性一回来价格就被推了回去,那就是一次由流动性造成的假动作。
这里有一个区别必须分清楚:不算数的意思是这次事件的证据缺失,不是证据为负。证据缺失的时候,结构判断保留、把握程度下调、仓位减半;证据为负的时候,结构判断本身要被质疑。把“没量可读”当成“缩量”,恰好会把一个没有承接的假 Spring 读成一个漂亮的 Test,而这两个结论指向完全相反的动作。
第四条,量的比较必须同时段对同时段。在有明确交易时段的品种上,这道处理在日线级别可以省掉,因为日线本身已经把一天内部的时段差异平均掉了(11.7)。在 24 小时品种上不行,因为这里日线的构成本身随时段变化:某一天亚洲时段特别活跃,这一天的日线量就被抬高了,而抬高的原因跟结构毫无关系。
稳妥的做法是把日线量拆成三段分别比。判断“这一天是不是近期最大量”,比的是这一天的主时段量是不是过去三个月主时段里最大的。SC 的判据在这类品种上因此要改写成“主时段的量必须是近期最大”,其余两段只作参考,不参与认定。
四条做法定下来之后,几个具体事件的界定跟着调整。SC 在这类品种上经常横跨两个时段:卖压在欧洲时段开始释放,在美洲时段完成,收回也在美洲时段。按日历日切,这一件事可能被切成两根 K 线,前一根收在低位,后一根拖着长下影,你读到的是“跌一天,第二天见底”,而实际上它是一次连贯的抛售加承接。按主时段锚定之后,它是一根,形态就恢复了。
这个差别不只是好看不好看。按两根读,你会去找“第二天的承接”,会要求 ST 在第三天出现,整条时间线往后错一格;按一根读,ST 应该在下一个主时段就出现。时间线错一格的后果是你在等一个不会来的东西,然后在它真的走掉之后才反应过来。
Spring 的下刺在这类品种上经常发生在亚洲时段,而收回发生在欧洲开盘。这本身不是问题,只要下刺时段的成交量过得了第三条那道关。真正的问题在另外两个时点:周末之前的最后几个小时,以及主要市场的假日前后。那时候流动性是整周最差的,任何极值都不可信,而这两个时点恰恰是最容易出现漂亮下影的地方。
周末跳空要单独处理。加密货币没有周末,外汇和期货有。周五收盘到周一开盘之间价格可以跳一大段,而这段跳空里一笔成交都没有发生,它不代表任何换手,也不代表任何人的意愿。跳空越过了结构关键位的,按方向宣告处理,等回补确认;跳空落在区间内部的,忽略它,等回补之后按原来的结构继续(7.2)。
绝对不要把一次周末跳空造成的“跌破下沿”当成 SOW。SOW 的定义里包含放量,而一段没有成交的价格移动谈不上放量。同样的道理,一次周末跳空造成的“突破上沿”也不是 SOS,它连一手成交都没有,谈不上任何一方付出了努力(1.8)。这类跳空的正确读法只有一条:它把价格搬到了一个新位置,接下来要看真正开始交易之后,价格能不能待在那里。
一个事件横跨两个时段的时候,收盘位置怎么读,需要单独定一条。答案是只读主时段那一段的收尾位置,不读日线那根 K 线的收盘。把上面那次 SC 拆开:欧洲时段价格一路往下,美洲时段先继续下探然后被接住、收回,主时段结束的时候价格站在这一整段区间的上三分之一。这就是“收在上三分之一”的正确读法,它记录的是有人参与的那段时间里谁赢了。如果按服务器零点切,收盘落在亚洲时段的某个安静时刻,那个位置只是一个漂移出来的报价,跟胜负无关。
假日和半日市要一并划掉。主要市场休市的那几天,同一个品种的报价还在走,但下面挂着的量可能只有平时的一两成,这时候出现的任何“跌破”“放量”“收回”都不参与认定(11.4)。这类日子的量柱不是缩量,是没量:缩量说明可卖的东西少了,没量说明人不在,前者是证据,后者什么都不是。稳妥的做法是在图上把这几天标出来,读结构的时候直接跳过,就像期货换月那几天一样。
确认窗口在这类品种上要按时段数,不按小时数。“一到两根日线”翻译过来是“一到两个主时段”。一个在亚洲时段出现的 Spring,它的确认窗口最早从欧洲开盘算起,因为在那之前没有足够的成交量去确认任何东西。按小时去数,你会在流动性回来之前就把一个还没来得及被验证的判断作废掉,然后眼看着它在欧洲开盘之后一小时里完成全部确认(15.3)。
加密品种还有一条额外的、比上面几条更基础的:量的口径。这里的成交量分散在几十家交易所,各家的统计口径和真实性参差不齐,没有任何一个中央撮合可以当裁判(1.5)。要么始终用深度最好的那一家,要么始终用一个可信的聚合口径,最忌讳今天看这家明天看那家。
这一条在这类品种上比在任何别的品种上都要紧,因为同源同口径是相对比较能够约掉失真的唯一前提(11.7)。前提一破,你的“近期最大量”就只是两个不同尺子量出来的数放在一起比大小,比出来的倍数没有任何含义,而它看起来和一个真实的倍数一模一样。
15.6
进场执行与止损缓冲
确认和执行之间的间隔现在极短,所以进场的动作要跟着改:确认信号出现之后以市价执行,不等更好的价格。理由是在快速的市场里,等待回踩的成本高于价差成本——等来的回踩可能不来,或者来了就不再给价,而你付出的价差通常只有止损距离的几十分之一。两者的量级根本不在一个级别上。
这一条只适用于确认已经出现的情况,它不是追价的许可。两者的区别不在于你下的是不是市价单,在于你手上有没有一个事先写好、并且已经被兑现的预期(13.7)。追价指的是在确认出现之前,只凭价格在动就下单;这里说的是确认已经出现之后不要犹豫。分不清这两件事的人,会把“不等更好的价格”读成“看到大阳线就买”,那是完全相反的东西。
挂单方式也要跟着改。从前常用的做法是在预期的回踩位置挂一张限价单等着,现在这个做法的问题是回踩可能不来:事件加速之后,相当一部分结构在确认之后直接走掉,一根都不给(15.4)。替代做法是把限价单改成条件单——在确认信号出现的那个位置设条件,触发之后以市价或者接近市价的限价执行,让触发条件而不是价格本身来决定你是否成交。
限价单还有它该留的地方,就是流动性差的时段和品种。那些情况下滑点的代价高于错过的代价,而且高得多。判断标准可以量化:先估算当前深度下的预期滑点(1.2)。本课程把滑点达到止损距离的 10% 作为改用限价单的起始参数;正式阈值应结合成交率、费用后期望和个人记录校准(16.1)。
止损的主锚没有变,仍然是结构作废的位置:Spring 低点之下、颈线之下、UT 高点之上(16.2)。这一条不能变,而且变了就没法用了。止损放在结构作废的位置,是因为那个位置一旦被有效跌破,你进场的全部理由就不存在了。放在别的地方——一个固定百分比、一个能承受的金额——你在被打掉的时候没有办法知道到底是判断错了还是运气差,日志也就统计不出任何东西(17.1)。
变化在于必须加缓冲。原因在前面几节已经反复出现:结构作废位是全市场最显眼的止损堆积位,止损单在被触发之前不出现在挂单簿里,而把价格推到那里、触发那批止损、再用触发出来的单子做对手盘,这件事的成本对一个有规模的参与者来说很低(13.6)。一个正好放在下刺低点下方一跳的止损,几乎必然会被扫到,而且被扫的那一下常常就是整个结构的最后一次下探。
本课程用两个标准的较大值演示缓冲计算:0.3 ATR 与该品种 3–5 个最小变动价位。它们是起始参数,正式使用前需要按品种与止损后路径统计校准。取较大值是为了同时覆盖两种品种。举例说明。某个合约最小变动价位 0.25 点,日 ATR 是 18 点,ATR 的 0.3 倍是 5.4 点,最小变动的四倍是 1 点,取 5.4 点。另一个品种最小变动 5 点,日 ATR 是 12 点,0.3 倍只有 3.6 点,还不到一个跳,这时候取最小变动的四倍即 20 点。
前一种是波动率标准在起作用,后一种是跳动单位标准在起作用。只用其中一个,总有一类品种会被算错,而且错的方向是固定的:只用 ATR,跳动单位大的品种缓冲永远不够;只用跳动单位,波动大的品种缓冲永远太小。两个都算一遍,取大的那个,这道手续花不了十秒钟。
缓冲太小和太大的代价不一样,而且都不小。缓冲太小,你会在判断完全正确的情况下被打掉,这是最难受的一种亏损,因为它会让人怀疑整套方法,而实际上出问题的只是止损的位置。它更实际的后果是改变你后面的行为——这样被打掉两三次之后,人会开始在该进场的时候不进,或者把止损放到一个自己都说不清理由的地方。
缓冲太大,单笔风险变大,按同样的风险预算算出来的仓位变小,同样的机会赚得更少;而且 R 值一旦失真,整条资金曲线的统计跟着失真(16.1)。你会以为自己的胜率提高了,实际上只是把一部分该被止损掉的仓位留到了更远的地方,而那部分仓位的最终结果并没有变好。
两者之间没有完美的平衡点,只有一个必须固定下来的参数。定下来之后按它执行,然后用日志去统计被扫的频率,据此调整(17.1)。可以先把“止损后价格回到原方向并到达目标”的比例作为校准指标。本课程用 30% 和 10% 演示上下阈值,并以 30 次止损作为首次复核点;这些数值都需要结合样本不确定性和个人基线调整。
24 小时品种上还有一条额外的麻烦:止损会在你睡觉的时候、在流动性最差的时段被触发。处理办法有两个,各有代价,没有第三个。一个是把缓冲按最差时段的波动来定,代价是缓冲变大、仓位跟着变小,你用收益换掉了这段风险。另一个是不在低流动性时段挂实盘止损,改成盯到主时段开始之后再决定,代价是你要接受一段没有保护的时间——这只有在仓位小到最坏情况也不影响资金曲线的时候才可以做,而这个前提比听起来严格得多。
最后一层约束来自流动性本身。波动集中的时段价差会扩张,止损的执行质量随之下降;数据发布的瞬间,价差可能扩大到平时的十倍,这时候被触发的止损会以很差的价格成交,你算出来的 R 和实际发生的 R 差得很远。这不是止损位置的问题,是执行环境的问题,处理办法在下一节。
15.7
数据发布前后的那几分钟
数据发布是执行环境里最集中的一个风险源,而它的风险不来自方向判断错误,来自那几分钟里的价格信息本身是失真的。理由要从挂单簿说起。发布前几分钟,做市商会主动撤走挂单或者把报价拉宽,因为他们不愿意在一个即将出现大幅重新定价的时刻手上还压着库存。挂单簿因此在数字出来之前就已经变薄了。
数字出来的那一瞬间,一批算法按同一个数字同时下单,价格在极薄的深度上连跳几十个跳。这个过程里成交量很大,但换手的性质完全不同——它不是供求关系的重新分配,是一次集中的重新定价。那几分钟里的所有量价关系都不能按 1.6 的方式去读,因为那套读法的前提是双方在一个正常的挂单簿上互相消耗,而这个前提当时不成立。
事件分级需要结合品种和市场,并按持仓周期设置。利率决议、核心通胀和非农就业的影响会随市场预期变化。采购经理人指数、零售数据和央行官员讲话也是如此。这些事件都不能仅凭事件名称固定处理。应在预案中记录事件窗口和可能滑点,并写明是否允许持仓及对应仓位上限。
分级表要事先写好,写在当天的预案里,不要等发布前十分钟才去查日历。临时查的后果不是漏掉某一条数据,是你在已经有仓位的情况下去判断它重不重要,而那个时候的判断一定会偏向“没那么重要”。这和作废条件必须在进场之前写下来是同一个道理(15.3)。
发布前十五分钟做两件事。第一件是把仓位减半,或者把止损收紧到最近的结构位。两个办法都可以,选哪一个取决于这笔仓位现在的状态:浮盈厚的收紧止损,把已经赚到的锁住一部分;刚进场没多久、还没有安全垫的直接减半。
第二件是把所有未成交的挂单撤离,或者改成发布之后重新评估再挂。理由和上面是同一个:发布瞬间的跳空和滑点让挂单的执行质量完全不可控。一张挂在下方的限价买单,可能在价格穿过它很远之后才成交,成交价比你想要的位置差出一大截,而这个价差不受你控制,也无法事后补救——你会带着一个从一开始就错了的成本,去执行一个按正确成本算出来的剧本。
发布后的前五分钟不做任何判断。那五分钟里的价格是噪声:价差扩张,流动性瞬间消失,算法在互相试探,任何结构判断在那个环境里都失真。这一条最难做到的地方在于那五分钟里价格走得最快、看起来机会最多,而人在看到快速移动的价格时最想动手。挡住它的办法只有一个,就是把“发布后五分钟不看图”写进预案,当成一个动作而不是一个态度。
价格稳定下来之后再重新评估,按跳空的三种类型处理(7.2)。跳空越过了结构关键位的,按方向宣告处理,等回补确认,不在跳空当根动手。跳空发生在区间内部的,忽略它,等回补之后按原来的结构继续走。跳空出现在趋势末端而且后面没有跟随的,那是衰竭缺口,是离场信号。
三种之外还要判断一件事:跳空的方向和你原来的剧本是不是一致。一致,剧本继续执行;相反,结构重新评估,原剧本作废。不要在这时候去修改止损或者目标位来迁就已经变了的价格,那是在给一个失效的判断续命,而续命的代价通常比认错大得多。
还有一道检查专门针对这个时段,因为它在这里的命中率最高:发布前后出现的任何一根用来做判断的关键影线,都要到第二个数据源上看一眼是否存在(11.6)。极端行情里的报价流最容易出现只在一家平台上存在的假刺,而这个假刺的位置往往正好在某个结构位之下,看起来像一次完美的清扫。不存在就不认这个刺——这一条在别的时段是可选的习惯,在数据发布前后是必查项。
发布之后的第二天还有一件事要做,而且它经常被跳过:回头看这次跳空有没有改变结构的因。一条数据把价格一次性推到了区间上沿之外,如果区间里的换手本来就还没做完,那么这一下走出去的距离是没有因支撑的,它多半会被收回来(1.7)。反过来,如果区间已经横了很久、换手充分,这条数据只是把一件本来就要发生的事提前了几天,那么它是一次真正的接管,后面应该有 LPS 来验证。同一个跳空,两种性质,区别不在数据本身,在它落地的位置。
数据发布还会制造一类特别像事件的假象,值得单独认一下。价格在发布瞬间冲出区间上沿,几分钟之内又掉回来,收在区间中部,量是平时的五六倍。这在图上和一次标准的 UTAD 几乎一模一样(6.3)。区别在于成因:UTAD 是有人在利用高位的接盘意愿出货,而这一下只是一批算法按同一个数字同时下单、然后同时发现价格跑过头了。分辨办法是看接下来两个正常时段——真的 UTAD 之后卖压会持续存在,价格反复上不去;假象之后价格通常回到发布前的位置附近继续原来的结构。
本课程默认不在高影响数据发布窗口新开仓,因为该时段的滑点、价差和价格可比性可能明显变化。是否持有原有仓位,应按预案中的事件风险规则处理。
把赔率算一遍就清楚了。即使你的方向判断是对的,你也拿不到那个方向应得的收益,因为进场滑点、价差扩张、止损位置被迫放宽这三样一起吃掉了一大截;而方向判断错的时候,损失却是全额甚至超额的,因为止损会在最差的价格上成交。收益被削掉一截、损失还被放大,这样的赔率结构不值得参与。因此,本课程在这一窗口采用不新开仓的默认规则。