For fourteen consecutive days — May 19 through June 1 — the BV-7X oracle published NEUTRAL while every one of its sub-signals screamed bearish. Bitcoin fell 9.6% over that window. The model wasn't wrong. It wasn't even uncertain. It had a high-conviction, unanimous directional view the entire time — and a single line of risk-management logic refused to let it speak.

This is the post-mortem: what broke, what it cost, the fix, and — because I get asked this — exactly what the fix did and did not do to the numbers. No spin. The headline is not "we got more accurate." The headline is "we stopped going dark."

14
Days silenced
100%
Abstention (window)
6 / 6
Suppressed SELLs correct*
−3.46%
Avg 7d move captured*
63.04→63.01%
Backtest acc. (unchanged)
7 / 5,600
Regime frequency (days)

*Resolved 7-day windows only (6 of the 9 recovered SELLs have completed their horizon as of June 2). See the caveats section — these are not yet in the scored backtest.

1. The symptom: a flat line where a signal should be

The oracle computes one directional call per day at 21:35 UTC, pins it to IPFS, and attests it on Base. Every call carries four sub-signals — trend, momentum, flow, value — that vote, and a decision layer that turns the vote into BUY / SELL / HOLD. On May 19 the published calls went flat and stayed flat for two weeks.

Here is the tape. The line is BTC spot; each red dot is a day the model published NEUTRAL. The directional view underneath every one of those dots was SELL.

BTC spot vs. published signal · May 19 – Jun 2, 2026
$78k $75k $72k $69k May 19 May 26 Jun 1 v5.6.9 live
BTC spot Published: NEUTRAL (14×) Fix deployed

A 9.6% decline, called by no one — because the model that called it was muted. BTC: $76,959 → $69,585. Intra-window high $77,693.

2. The diagnosis: a model that worked, gated by logic that didn't

The first thing to rule out was a dead data feed or a crashed signal layer. It was neither. Every single day, the decision layer produced the same trace:

# live trace, every day of the streak DECISION: Bearish consensus (trend/flow/momentum) → SELL SELL PROXIMITY GATE: MA200 (dist=-7.7%), RSI=29 — outside zone → HOLD

The model reached SELL. Then the SELL proximity gate — a risk filter that only lets sell signals fire when price is "close enough" to a reference moving average with a sane RSI — overrode it to HOLD. Every day. The gate exists for a good reason: historically, selling deep into an already-collapsed, far-from-mean market is a coin flip. But it had two coverage holes that, together, swallowed an entire regime.

Hole 1: the dead band

The gate had two branches. A structural-bear branch (for price more than 15% below the 200-day MA) and a normal branch (for price within 10% of it). Price that sat 10–15% below the MA fell through both — too far for normal, not far enough for structural — and defaulted to HOLD. A textbook off-by-one in threshold space.

Hole 2: the RSI floor

The normal branch also required RSI between 40 and 55. But a market in a confirmed downtrend is, by definition, oversold — RSI sat at a median of 32.6 across the streak. So even after closing the dead band, the normal branch still muted every bearish call whose RSI lived below 40. This was the bigger hole, and it's the one the first patch attempt missed.

The two holes mapped cleanly onto the data. Below: every day of the streak, its distance below the 200-day MA, its RSI, and which hole trapped it.

Where each silenced day fell · |distance below MA200|, RSI, new verdict
May 19
RSI 40
→ SELL
May 20
RSI 34
→ SELL
May 21
RSI 35
→ SELL
May 22
RSI 40
→ SELL
May 23
RSI 33
→ SELL
May 24
RSI 36
→ SELL
May 25
RSI 31
HOLD
May 26
RSI 33
HOLD
May 27
RSI 32
→ SELL
May 28
RSI 32
→ SELL
May 29
RSI 20
HOLD†
May 30
RSI 24
HOLD†
May 31
RSI 29
HOLD†
Jun 1
RSI 30
→ SELL
Recovered → SELL (9) Held: not declining (2) Held: RSI<30 capitulation (3)

Bar width = distance below the 200-day MA (Jun 1 = −10.7%, the deepest). †Days with RSI below 30 are deliberately still held — that's the capitulation zone, where you don't want to initiate new shorts into a possible bottom.

3. What the silence cost

A signal product that goes dark for two weeks has a cost even if you can't book it as P&L: it's the track record you didn't build, the attestations you didn't write, the calls subscribers didn't get. And in this case the calls would have been right.

Of the nine days the fixed gate now fires SELL, six have completed their 7-day evaluation window as of June 2. All six were correct — price was lower seven days later, every time.

DateDist MA200RSI7d ROCOldNewRealized 7d
May 19−5.5%40−4.7%HOLDSELL−1.36%
May 20−4.6%34−2.5%HOLDSELL−3.53%
May 21−4.2%35−4.5%HOLDSELL−5.20%
May 22−6.2%40−4.0%HOLDSELL−3.28%
May 23−5.2%33−2.1%HOLDSELL−3.57%
May 24−5.2%36−2.3%HOLDSELL−3.80%
May 27–Jun 1≤−6.8%30–32<−3%HOLDSELLpending
Resolved6 of 6 correct · avg realized−3.46%

The opportunity cost, stated plainly

A correct, unanimous SELL signal was generated and then suppressed on 9 separate days during a −9.6% decline. On the six that have since resolved, the average 7-day move in the signal's direction was −3.46%. That is two weeks of correct, attestable track record the protocol simply did not publish.

4. The fix (v5.6.9)

Two changes, both in the SELL proximity gate. Both are exposed as tunable thresholds and mirrored exactly into the backtest engine, so the live model and the simulator can never silently disagree.

// 1. Close the dead band: structural trigger -15 -> -10 sellGateStructuralMADistance: -10 // 2. Relax the RSI floor in a CONFIRMED downtrend only // (death cross AND 7d ROC < -2%): floor 40 -> 30 sellGateBearRSIFloor: 30 // RSI < 30 still HOLDs (capitulation)

The second change is the load-bearing one. It says: when a death cross confirms a structural downtrend and price is actively declining, an oversold reading (RSI 30–40) is a reason to sell, not a reason to abstain. Below 30, the model still steps aside — that's the capitulation zone, where shorting the bottom is how you give back the whole trade.

5. Validation: the part where I refuse to oversell it

Here is the question a CEO should actually ask: "You loosened a risk filter. Did you just trade discipline for noise?" The answer, from a full-history backtest over 5,600 days (2011–2026), is no. The change is accuracy-neutral.

MetricBefore (floor 40)After (floor 30)Δ
Overall accuracy63.04%63.01%−0.03pp
BUY accuracy64.66%64.66%0.00pp
SELL accuracy57.49%57.36%−0.13pp
SELL near MA20062.4%≥58% floor
SELL far below MA20059.4%≥58% floor
Actionable signals2,0132,014+1

Read those last two rows carefully, because they're the whole story. Over thirteen years, loosening the floor changed the historical signal count by exactly one. The regime this fix targets — death cross, price hugging the MA, RSI stuck in the 30s — occurred on just 7 of 5,600 days (0.13%), and five of those seven are the streak we just lived through. The fix is, by construction, almost invisible to history and surgical to the present.

Signal availability (window)
0 / 149 / 14
Backtest accuracy (5,600d)
63.04%63.01%
Resolved recovered SELLs
6 / 6

The honest caveat (because a quant who hides these gets fired)

The live streak is not yet in the scored backtest — those days haven't completed their 7-day forward window inside the dataset, so they're excluded from the 63.01% above. Strip them out and this exact regime has only ~2 historically resolvable instances, and the one out-of-streak case was a loss (0/1).

So I am not claiming statistical proof that these new SELLs are accurate. I'm claiming three things I can defend: (1) the change does not degrade overall accuracy on 13 years of data; (2) it is structurally contained — it requires a death cross, so it can never fire in a bull market; and (3) on the only live test so far it went 6/6. That is a moderate-confidence, low-downside, reversible change — it's a single env-overridable threshold. We re-evaluate once the streak resolves.

6. The governance footnote

Two smaller things shipped with v5.6.9, because a model is only as trustworthy as its paper trail:

  • Version drift, closed. The previous fix attempt changed live logic but never bumped the version constant — so predictions were being stamped 5.6.8 while running newer code. That's exactly the kind of silent drift that erodes an attestation's meaning. The stamp is now 5.6.9, enforced by a test that ties the version constant to the changelog's LIVE row.
  • 13 new regression tests. The gate is now pinned at every boundary — the dead band, the RSI floor, the death-cross requirement, the capitulation guard. The bug that produced a 14-day blackout cannot silently return.

Every call BV-7X has ever made is on-chain, timestamped, and verifiable — including the fourteen that said NEUTRAL. We don't get to quietly delete an embarrassing fortnight; it's attested on Base forever. The only honest response to a public track record is to fix the machine in public and show the math. That's this post.

A model that abstains when it's certain isn't being cautious. It's being broken quietly. The fix wasn't to make it smarter — it was to stop muzzling it when it already knew the answer.

Verify every call yourself

The full prediction history — including the silent fortnight and the v5.6.9 calls — is attested on Base and queryable live.

Open the Terminal →
Mischa0X
Building BV-7X — autonomous Bitcoin intelligence
Previously: Goldman Sachs, Deutsche Bank

连续十四天 —— 5月19日到6月1日 —— BV-7X 预言机持续发布 中性,而它的每一个子信号都在高喊看跌。在这段时间里,比特币下跌了 9.6%。模型没有判断错误,它甚至并不犹豫。整整两周,它都持有一个高确信、全票一致的方向性观点 —— 却被一行风控逻辑硬生生堵住了嘴。

这是一份事故复盘:哪里坏了、代价是什么、怎么修的,以及 —— 因为总有人问 —— 这次修复对数据到底做了什么、没做什么。不加修饰。重点不是"我们更准了",重点是"我们不再失声了"。

14
失声天数
100%
弃权率(窗口内)
6 / 6
被压制的卖出全部正确*
−3.46%
平均7日捕捉幅度*
63.04→63.01%
回测准确率(不变)
7 / 5,600
该形态出现频率(天)

*仅限已结算的7日窗口(截至6月2日,9个恢复的卖出信号中有6个已走完周期)。详见下文"诚实的保留意见" —— 这些尚未纳入计分回测。

1. 症状:本该有信号的地方,是一条平线

预言机每天 UTC 21:35 计算一个方向性判断,固定到 IPFS,并在 Base 上链存证。每个判断包含四个子信号 —— 趋势、动量、资金流、估值 —— 投票,再由决策层把投票转化为 买入 / 卖出 / 持有。5月19日起,发布的判断变成平线,并持续了两周。

这是行情图。线是比特币现货;每个红点是模型发布"中性"的一天。而每个红点底下的真实方向观点,都是卖出

比特币现货 vs. 发布信号 · 2026年5月19日 – 6月2日
$78k $75k $72k $69k 5/19 5/26 6/1 v5.6.9 上线
比特币现货 发布:中性(14次) 修复上线

一场 9.6% 的下跌,无人预警 —— 因为预警它的模型被静音了。比特币:$76,959 → $69,585,窗口内高点 $77,693。

2. 诊断:模型没问题,是堵它的逻辑有问题

首先要排除的是数据源中断或信号层崩溃。两者都不是。每一天,决策层都给出同样的轨迹:

# 整个连续期内,每天的实时轨迹 决策:看跌共识(趋势/资金流/动量)→ 卖出 卖出邻近门控:MA200 (距离=-7.7%), RSI=29 — 区域外 → 持有

模型得出了卖出。然后卖出邻近门控 —— 一个只有当价格"足够接近"参考均线、且 RSI 合理时才放行卖出信号的风控过滤器 —— 把它改写成了持有。天天如此。这个门控的存在有其道理:历史上,在一个已经崩盘、远离均值的市场里追空,胜率接近抛硬币。但它有两个覆盖漏洞,叠加在一起,吞掉了整整一个市场形态。

漏洞一:死区

门控有两条分支。一条结构性熊市分支(价格低于200日均线15%以上),一条正常分支(价格在均线10%以内)。而位于均线下方10–15%的价格,从两条分支中间漏了下去 —— 对正常分支太远,对结构性分支又不够远 —— 默认落入持有。教科书式的阈值"差一"错误。

漏洞二:RSI 下限

正常分支还要求 RSI 在 40 到 55 之间。但一个处于确认下行趋势的市场,从定义上就是超卖的 —— 整个连续期内 RSI 中位数为 32.6。所以即便堵上了死区,正常分支依然会静音掉所有 RSI 低于 40 的看跌信号。才是更大的漏洞,也是第一次修补尝试漏掉的那个。

两个漏洞干净地映射到数据上。下图:连续期内每一天,其低于200日均线的距离、RSI,以及它被哪个漏洞困住。

每个失声日的归属 · |低于MA200的距离|、RSI、新判断
5/19
RSI 40
→ 卖出
5/20
RSI 34
→ 卖出
5/21
RSI 35
→ 卖出
5/22
RSI 40
→ 卖出
5/23
RSI 33
→ 卖出
5/24
RSI 36
→ 卖出
5/25
RSI 31
持有
5/26
RSI 33
持有
5/27
RSI 32
→ 卖出
5/28
RSI 32
→ 卖出
5/29
RSI 20
持有†
5/30
RSI 24
持有†
5/31
RSI 29
持有†
6/1
RSI 30
→ 卖出
恢复 → 卖出(9) 持有:未在下行(2) 持有:RSI<30 投降区(3)

条宽 = 低于200日均线的距离(6月1日 = −10.7%,最深)。†RSI 低于 30 的日子仍被刻意持有 —— 那是投降区,你不会想在可能的底部去开新空单。

3. 失声的代价

一个信号产品失声两周,即便无法记入损益表,也是有代价的:那是你没能建立的历史业绩、没能写下的存证、订阅者没能收到的判断。而这次,这些判断本会是正确的

在修复后门控如今发出卖出的九天中,截至6月2日有六天已走完7日评估窗口。六个全部正确 —— 七天后价格更低,无一例外。

日期距MA200RSI7日ROC实现7日
5/19−5.5%40−4.7%持有卖出−1.36%
5/20−4.6%34−2.5%持有卖出−3.53%
5/21−4.2%35−4.5%持有卖出−5.20%
5/22−6.2%40−4.0%持有卖出−3.28%
5/23−5.2%33−2.1%持有卖出−3.57%
5/24−5.2%36−2.3%持有卖出−3.80%
5/27–6/1≤−6.8%30–32<−3%持有卖出待结算
已结算6/6 正确 · 平均实现−3.46%

把机会成本说白

在一场 −9.6% 的下跌中,一个正确、全票一致的卖出信号被生成、又被压制,共计9天。在已结算的六天里,信号方向上的平均7日波动为 −3.46%。这就是协议本可发布、却没有发布的两周正确且可存证的业绩。

4. 修复(v5.6.9)

两处改动,都在卖出邻近门控里。两者都以可调阈值暴露,并被精确地镜像进回测引擎,因此线上模型与模拟器永远不会悄悄地各执一词。

// 1. 堵住死区:结构性触发 -15 -> -10 sellGateStructuralMADistance: -10 // 2. 仅在"确认下行趋势"中放宽 RSI 下限 // (死叉 且 7日ROC < -2%):下限 40 -> 30 sellGateBearRSIFloor: 30 // RSI < 30 仍持有(投降区)

第二处改动才是承重的那一处。它说的是:当死叉确认了结构性下行、且价格正在主动走低时,超卖读数(RSI 30–40)是卖出的理由,而不是弃权的理由。低于30,模型依然让路 —— 那是投降区,在底部追空正是你把整笔交易吐回去的方式。

5. 验证:我拒绝夸大的那一部分

一个 CEO 真正该问的问题是:"你放松了一个风控过滤器。你是不是拿纪律换了噪声?"来自一个跨越 5,600 天(2011–2026)的全历史回测的答案是:没有。这次改动对准确率是中性的。

指标之前(下限40)之后(下限30)Δ
整体准确率63.04%63.01%−0.03pp
买入准确率64.66%64.66%0.00pp
卖出准确率57.49%57.36%−0.13pp
MA200 附近卖出62.4%≥58% 下限
MA200 远下方卖出59.4%≥58% 下限
可操作信号数2,0132,014+1

仔细读最后两行,因为那就是全部故事。在十三年里,放松下限使历史信号数仅改变了整整一个。这次修复针对的形态 —— 死叉、价格紧贴均线、RSI 卡在30多 —— 仅出现在 5,600 天中的7天(0.13%),而其中五天正是我们刚刚经历的这段连续期。这次修复在构造上对历史几乎不可见,对当下却精准切中。

信号可用性(窗口内)
0 / 149 / 14
回测准确率(5,600天)
63.04%63.01%
已结算的恢复卖出
6 / 6

诚实的保留意见(因为隐瞒这些的量化分析师会被开除)

这段实盘连续期尚未纳入计分回测 —— 这些日子在数据集内还没走完7日前瞻窗口,所以不在上面的 63.01% 之中。把它们剔除后,这个确切形态在历史上仅有约 2 个可结算样本,且唯一的非连续期样本是亏损的(0/1)。

所以我并不声称这些新卖出信号准确性的统计证明。我声称的是三件我站得住脚的事:(1)这次改动在13年数据上不降低整体准确率;(2)它在结构上是受限的 —— 它要求死叉,因此永远不会在牛市中触发;(3)在迄今唯一的实盘检验中它是 6/6。这是一次中等信心、低下行风险、可逆的改动 —— 它只是一个可由环境变量覆盖的阈值。等连续期结算后我们会重新评估。

6. 治理脚注

随 v5.6.9 一并上线的还有两件小事,因为一个模型的可信度不会超过它的存证记录:

  • 版本漂移,已闭合。上一次修复尝试改了线上逻辑,却没有更新版本常量 —— 于是预测在运行更新代码的同时被打上了 5.6.8 的戳。这正是那种侵蚀存证意义的静默漂移。版本戳现在是 5.6.9,并由一个把版本常量绑定到变更日志 LIVE 行的测试来强制执行。
  • 13 个新回归测试。门控现在在每一个边界都被钉死 —— 死区、RSI 下限、死叉要求、投降区保护。那个造成14天失声的 bug 不可能再悄悄回来。

BV-7X 做过的每一个判断都在链上、带时间戳、可验证 —— 包括那十四个说"中性"的。我们没法悄悄删掉一段尴尬的两周;它永远存证在 Base 上。对一份公开业绩唯一诚实的回应,就是当众修好机器、并把数学摆出来。这篇文章就是。

一个在确定时弃权的模型不是谨慎,而是在悄无声息地失灵。这次修复不是让它更聪明 —— 而是在它早已知道答案时,别再捂住它的嘴。

自己验证每一个判断

完整的预测历史 —— 包括那段沉默的两周和 v5.6.9 的判断 —— 都存证在 Base 上,可实时查询。

打开终端 →
Mischa0X
正在构建 BV-7X — 自主比特币情报
曾就职于:高盛、德意志银行