Scoring policy v2.2 · frozen
AI interprets what a post means; a deterministic engine measures each call against price at several horizons and ranks callers on the results.
For each post the AI extracts the asset, direction (bullish or bearish), whether intent is explicit or inferred, any stated horizon, and the exact text supporting it, with a confidence score. Each asset in a post gets its own prediction record.
Only context available at publication is used: the post and the thread before it. Later replies and price data never reach the model. Post text is treated as data, never as instructions.
Excluded: historical commentary, pure questions, two-sided statements, sarcasm that cannot be resolved, and unresolved conditional calls. Extractions below 85% confidence go to manual review rather than being forced into a score.
Horizon is how long after each call we check the price. Every accepted call is measured at all of them, so the same call can be right at 4 hours and wrong at 30 days:
Window is which calls count: those whose outcome resolved in the period, so a short window holds calls that have actually matured. Within a window, recent calls weigh more (half-life = half the window; all time 180 days).
Current holds only calls still live at their stated timeframe, measured from the post to the latest price, so it shows how open calls stand right now. It changes with every run, and the window does not narrow it. Once a call's timeframe ends, it leaves Current and counts at its stated horizon.
Timeframes written in the post (“today”, “this week”, “this month”) set the call's stated horizon; vague ones go to review. The share of calls with a stated timeframe is shown on each profile.
r = d · (price at horizon / price at post − 1), d = +1 bullish, −1 bearish
correct if r > 0 · incorrect if r < 0 · neutral only if the price is unchanged
alpha = r − d · (BTC return over the same timestamps) (BTC calls: vs cash)
The entry price is the first observation at or after publication, never before it. Exit is the observation at the end of the horizon, within 60 minutes (10 minutes on 5-minute candles for 1h and 4h). Missing or stale prices leave the call unresolved; nothing is estimated. We also store the best and worst point along the way and the asset's 30-day volatility at entry.
Any move counts. A call is neutral only when the exit price equals the entry price exactly, the same rule Arena markets use. Neutral calls are left out of the hit rate.
Example: bullish ETH
ETH goes from $3,000 to $3,150 in 24 hours (+5%) while BTC rises 3%. With a 1.25% band the call is correct, and its alpha is 5% − 3% = +2%: it beat simply buying BTC.
Each view (window × horizon × asset) ranks callers on two measured numbers. There is no composite score and nothing is weighted or adjusted.
order = highest ROI, then highest hit rate, then most calls
Top 10% = rank position among ranked callers in this view
Callers with fewer than 5 scored calls in a view are shown with a “low sample” badge and are not ranked.
Returns are shown per call: “+2% avg 7d return” means each call moved 2% in the called direction over the following 7 days on average. “Following every call” is the same average: one bankroll split equally across every call resolved in the window, not a sum of the calls. We do not annualise returns: calls overlap, and compounding them back to back would overstate what anyone could have earned.
Same-account, same-asset, same-direction calls within a fixed 24-hour episode count once, anchored to the first eligible post. Later posts are kept as evidence and reversals are flagged.
Claiming a profile verifies ownership only. It cannot hide, remove or change predictions. Corrections go through a logged review and every affected snapshot is recomputed under the published policy.
Known edits are tracked with timestamps. Provider-required deletions are applied, and any resulting coverage limits are disclosed on the profile.