Research

How the signal actually performs against realized market outcomes: fees included, live and reconstructed data separated, negative results kept. Pooled across everything there is no headline edge. Reconstructed history reads as a coin flip, the young live record currently runs below one, and we publish both numbers. Hit rates do differ a lot by event type. But on live data those slices do not hold their sign when the window is split. And once market beta is stripped out, the residual information is indistinguishable from zero. The panel below publishes that number too. So Shingou is a filter and sizing overlay for a strategy you already run, never an entry generator.

What the event filter is worth

Every directional signal held 24h at equal weight, net of 20 bps round-trip fees, over a frozen 90-day window (2026-04-062026-07-28, reconstructed segment). Taking everything loses money; filtering to the event types with measured edge flips it positive, chosen in-sample after seeing the event study, an illustration of the overlay, not a strategy.

all signalsevent slice (in-sample)
-2002026-04-062026-05-212026-07-18all signals: -30.79 summed net returnall signals (-30.79)event slice (in-sample): 2.29 summed net returnevent slice (in-sample) (+2.29)
Cumulative sum of per-trade net returns (equal weight, no compounding, fees included). Units are summed returns, not portfolio percentage.
VariantTradesWin rate net [95% CI]Mean net / tradeΣ net returnsMax drawdown (Σ)
All directional signals17,64547.5% [46.8%–48.2%]-17.4 bps-30.7941.92
Excluding listing events (the observed anti-signal)17,47047.6% [46.9%–48.4%]-17.0 bps-29.6540.87
Funding, whale-movement and macro events only4,62249.5% [48.0%–50.9%]4.9 bps2.298.73
Methodology & disclosed assumptions
  • 24-hour horizon only; directional signals only (neutral excluded); live signals published later than one hour after their bucket are excluded.
  • One trade per signal: enter at the first close realized after publication, exit at the 24h close; net return subtracts a 10 bps taker fee per side (20 bps round trip).
  • Equal weight per trade, no compounding: the equity curve is the running sum of per-trade net returns, so mean net return times trade count equals the curve's endpoint.
  • Overlapping positions are allowed (hourly signals with a 24h hold imply up to 24 concurrent positions per symbol): this is a signal-quality statistic, not an executable portfolio.
  • Max drawdown is the largest peak-to-trough drop of that running sum, in units of summed per-trade return, not a portfolio percentage.
  • Live and reconstructed segments are computed separately and never pooled.
  • The event-filtered variants were chosen after seeing the event study on the same window: they illustrate the filter/overlay use of the signal, they are not validated strategies.

Artifact a2e2b9e, frozen over 2026-04-062026-07-28; fee assumption 10.0 bps per side.

Composition slices by event type

Forward returns at 24h grouped by the signal's dominant event type, in the 90-day reconstruction: funding, whale movement and macro print above the book; listing prints as an anti-signal; the weak rows stay in the table. Read these as composition, not demonstrated edge: on the live record the same axis flipped sign across sub-windows (+14.1pp, then −16.3pp, then −2.6pp for idiosyncratic vs market-wide), which is what a young sample looks like when the tape changes regime. The rolling tables below are the live truth.

Dominant eventnHit rateMean signed returnMedian
regulation6,60749.5%-10.1 bps0.0 bps
macro4,25752.6%22.9 bps15.9 bps
market_structure2,89350.6%12.3 bps7.2 bps
product_launch1,39048.0%-18.7 bps-10.8 bps
hack_exploit66452.4%10.0 bps16.4 bps
other57649.0%-19.3 bps-2.0 bps
partnership49249.0%7.2 bps-2.4 bps
whale_movement21354.9%34.9 bps28.3 bps
listing17536.0%-45.1 bps-104.1 bps
funding15255.9%68.4 bps50.0 bps
legal10947.7%-34.8 bps-6.7 bps
network_upgrade8053.8%-2.5 bps26.5 bps
tokenomics3644.4%-21.8 bps-46.9 bps
delisting1100.0%137.9 bps137.9 bps

The headline numbers, honestly

Pooled hit rates with Wilson 95% intervals, published as they land, even where an interval sits entirely below 50%. No lookahead: entries use the first close realized after publication. Reconstructed (GDELT-backfilled) buckets are never pooled with live.

SegmentHorizonnHit rate gross [95% CI]Hit netMean ret grossMean ret netIC
Reconstructed1h17,65549.6% [48.9%–50.3%]33.8%2.7 bps-17.3 bps0.033
4h17,61549.0% [48.3%–49.7%]41.5%4.6 bps-15.4 bps0.012
24h17,64550.4% [49.7%–51.1%]47.5%2.6 bps-17.4 bps0.023
Live1h8,71247.2% [46.2%–48.3%]31.0%0.5 bps-19.5 bps0.004
4h8,71446.8% [45.7%–47.8%]37.7%-4.9 bps-24.9 bps-0.041
24h8,70947.6% [46.5%–48.6%]44.4%-6.7 bps-26.7 bps-0.033

Information content: does the score rank anything?

Hit rate asks whether the tape agreed with us. This asks the harder question. One market factor owns about two-thirds of hourly variance across this universe, so we residualize each 24h return against a leave-one-out market factor and measure the rank correlation with the score. Live segment only, per engine and scorer version. The band comes from resampling whole days, because outcomes inside a day share the tape and per-row intervals would overstate the evidence.

VersionnDaysResidual ICDay-clustered 95%β=1Residual-signed hit
v2(engine)8,06823+0.012-0.021 … +0.043includes zero+0.01650.6%
claude-haiku-4-5#p1(scorer)8,06823+0.012-0.021 … +0.043includes zero+0.01650.6%

An interval containing zero means no measurable information at this sample size. That is where the live record stands today, and it is published here before it is flattering. Betas are full-sample, a lookahead that favors the signal, so the β=1 column re-runs it with no estimation at all. These are rank statistics, never P&L.

Scorer quality on the golden set

Market outcomes are a slow, noisy judge of a classifier: resolving a one-point hit-rate change takes months of live days. Classification quality does not have that problem. These come from a fixed set of 150 labeled production documents, so they move only when the scorer changes. Rows without the live tag are evaluated candidates, published whether or not they were promoted; promotion needs pre-committed live gates on a fresh window. Symbol precision is the live scorer's honest weak spot: it attaches too many symbols to market-wide stories.

ScorerEvent typeSentiment sign (all pairs)Symbol precisionSymbol F1Relevance MAEDerivative muted
claude-haiku-4-5#p2mlive81.0%72.6%14.9%25.4%0.22191.6%
claude-haiku-4-5#p1@409673.2%47.6%15.1%26.1%0.1966.2%
claude-haiku-4-5#p2mf82.0%71.2%81.0%81.0%0.22491.6%
claude-opus-4-8#p2m@409690.9%81.5%84.2%80.2%0.19094.4%
claude-sonnet-5#p2m@409686.7%68.4%87.3%75.7%0.22097.2%

Rolling soak metrics updated daily

Rolling metrics aren't available in this environment. The frozen backtest above is the committed record.

Not investment advice; negative results are kept on purpose. Every published bucket's hash is committed to a public append-only log at publish time. Consume the signal via the API or see the live demo.