Track record now covers 3m — what the data said before we shipped it

For two weeks, AlgoVault’s 3-minute timeframe sat in shadow mode: cron-seeded, fully evaluated, but stripped from the public /api/performance-public aggregate before any caller saw it. Today we flipped it into the live track record. Here’s what the data looked like before we made that call, and why the flip is overdue rather than aggressive.

The measurement

3m had accumulated 3,961 evaluated samples across our 5 venues by 2026-05-19. Weighted-aggregate PFE Win Rate: 92.43%. Per-venue breakdown was tight: Bitget 93.5%, OKX 91.9%, Bybit 92.2%, Binance 92.6%, Hyperliquid 92.2%. No outlier venue, no thin-sample skew.

Timeframe Samples PFE Win Rate
5m 37,305 92.49%
15m 19,048 92.30%
3m (newly public) 3,961 92.43%
30m 8,715 89.86%
1h 13,016 88.36%
4h 2,424 86.01%
2h 7,494 85.51%
12h 1,307 84.09%
8h 1,027 81.01%
1d 775 58.45%

3m outperforms 7 of the 9 timeframes that were already public. Only 5m and 15m beat it, and the gap is under 0.1pp.

How shadow mode worked

Every timeframe we ship gets seeded by the same cron jobs that feed the public dashboard. Shadow-mode TFs (1m + 3m, originally) are seeded identically — the only difference is a filter in the public response handler that strips them out of the byTimeframe aggregate. They remain fully visible inside byExchange.<EX>.byTimeframe for our own auditability.

The point of the shadow window is to accumulate honest sample density before claiming anything publicly. Two gates: ≥3,000 evaluated samples and ≥85% weighted PFE Win Rate. 3m cleared both gates by a clear margin — sample count +32% above the floor, PFE +7.4pp above it.

What we’d previously said about sub-5-minute signals

Our FAQ used to say sub-5-minute indicators are “noise-dominated by design.” That framing was a pre-measurement assumption baked into copy before we had data. The measured 3m result — 92.43% PFE Win Rate across nearly 4,000 evaluated samples — refutes it. We’ve dropped that framing from the FAQ, llms-full.txt, and our brand-facts canonical reference as part of this flip.

The Data Integrity rule we operate under says public copy can’t lag behind measurement. When the numbers contradict the framing, the framing changes.

What’s next

  • 1m remains shadow this cycle. Sample count is 3,330, just below our preferred comfort margin. Another weekly cron cycle should push it over. Same flip mechanism when it clears.
  • 3m universe expansion. 3m is currently cron-seeded against a top-5 OI-restricted universe. The next wave expands it to top-50 to match the rest of the cron set. We’re sequencing that AFTER one week of post-flip stability so attribution stays clean.
  • Every signal is still Merkle-anchored on Base L2. No retroactive edits, no deletes. The 3m signals shipped over the past two weeks were already on-chain; the flip changes only what shows up in the public aggregate, not the underlying record.

Try it

The 3m timeframe is callable today via the MCP get_trade_call tool (set timeframe: "3m") or directly via /api/performance-public.byTimeframe["3m"]. Free tier: 100 calls per month, no signup.

Start at algovault.com. Verify any 3m signal against its on-chain Merkle proof at algovault.com/verify.