{"doctrine":"The market-call endpoints grade themselves. Twice a day the EXACT paid /signal and /brief computes are recorded (verdict + spot), then graded 24h later against realized movement. Fixed, recomputable hit rules — see method.","endpoints":["GET /signal","GET /brief"],"calls_recorded":27,"graded":23,"pending":4,"hit_rate_pct":17,"by_verdict":{"neutral":{"n":17,"hits":0,"rate_pct":0},"bearish":{"n":4,"hits":2,"rate_pct":50},"bullish":{"n":2,"hits":2,"rate_pct":100}},"honesty_note":"Direction on liquid majors is close to a coin flip. If this hit rate converges to ~50%, the ledger is saying the signal has no edge — and this page will say exactly that. Either outcome is the point: it makes every other number here credible.","known_data_caveat":"DISCLOSURE (2026-07-23): rows recorded before this date with momentum exactly 0 were produced while the 24h-change upstream (CoinGecko) was rate-limiting our host's shared egress IP. With no change/range input, momentum is 0 by construction and the verdict defaults to 'neutral' — those rows are a degraded artifact, not verdicts the product stands behind, and they will grade as misses. The Truth Engine itself surfaced this (nine consecutive momentum-0 rows); the endpoint now returns an UNCHARGED 502 instead of a hollow 'neutral', and the engine skips the slot rather than recording one. The affected rows are LEFT IN PLACE and labeled here rather than deleted — quietly removing inconvenient rows is precisely what a tamper-evident ledger exists to prevent.","recent":[{"kind":"brief","symbol":"BTC","slot":"2026-07-27T12","verdict":"neutral","change_pct":null,"hit":null,"graded":false},{"kind":"signal","symbol":"ETH","slot":"2026-07-27T12","verdict":"bullish","change_pct":null,"hit":null,"graded":false},{"kind":"signal","symbol":"BTC","slot":"2026-07-27T12","verdict":"bullish","change_pct":null,"hit":null,"graded":false},{"kind":"brief","symbol":"BTC","slot":"2026-07-27T00","verdict":"neutral","change_pct":null,"hit":null,"graded":false},{"kind":"signal","symbol":"ETH","slot":"2026-07-26T12","verdict":"bullish","change_pct":3.7,"hit":true,"graded":true},{"kind":"signal","symbol":"BTC","slot":"2026-07-26T12","verdict":"neutral","change_pct":1.08,"hit":false,"graded":true},{"kind":"brief","symbol":"BTC","slot":"2026-07-26T12","verdict":"neutral","change_pct":0.76,"hit":false,"graded":true},{"kind":"signal","symbol":"ETH","slot":"2026-07-26T00","verdict":"bullish","change_pct":4.55,"hit":true,"graded":true},{"kind":"signal","symbol":"BTC","slot":"2026-07-26T00","verdict":"neutral","change_pct":1.21,"hit":false,"graded":true},{"kind":"brief","symbol":"BTC","slot":"2026-07-26T00","verdict":"neutral","change_pct":1.1,"hit":false,"graded":true},{"kind":"brief","symbol":"BTC","slot":"2026-07-25T12","verdict":"neutral","change_pct":0.82,"hit":false,"graded":true},{"kind":"signal","symbol":"ETH","slot":"2026-07-25T00","verdict":"bearish","change_pct":1.35,"hit":false,"graded":true}],"method":{"record":"00Z + 12Z slots, BTC + ETH /signal + BTC /brief, exact paid code path (signalVerdict/marketBrief exports)","grade":"24h later vs Coinbase spot; bullish/risk_on hit ⇔ change > +0.25%, bearish/risk_off hit ⇔ change < −0.25%, neutral hit ⇔ |change| ≤ 0.75%","durability":"append-only JSONL, git-snapshotted (tamper-evident), survives redeploys"},"as_of":"2026-07-27T22:11:51.938Z"}