We track 150 public crypto forecasters on X. When one posts a price prediction, we capture it, pull the claim out, and score it against real 15-minute market data — the same way for everyone. Here's exactly how a call becomes a score.
Every call gets four scores, each from 0 to 1, each measuring a different angle of "was this a good call?" The final CallRank Score is the average of all four.
We deliberately don't score against price targets. Plenty of calls don't include a number — "BTC going up" vs. "BTC to $120k" — and we want every post scored the same way. So instead of asking "did it hit the target," we measure the actual move price made in the predicted direction.
All four are scored from 0 to 1 and weighted equally (25% each). Two of them — Cleanliness and Time in Favor — are simple ratios. The other two — Absolute Magnitude and Move Quality — use a fixed formula, shown in full below so you can recompute any score yourself.
How big was the favorable move, adjusted for how long the forecast had to play out? A 20% run in two weeks counts for far more than 20% spread over six months. It answers the simplest question: did the call actually deliver a real move?
How one-sided was the move? We compare the best move for the call against the worst move against it during the window. A call that ran cleanly in the predicted direction scores higher than one that dropped hard against the forecaster before recovering.
What share of the window was price actually on the forecaster's side? From the anchor to the deadline, we count how many candles were favorable. A call that was on-side 80% of the window scores higher than one on-side only 30%.
Was the move impressive for that specific coin? A 15% move in BTC is a big deal; 15% in a tiny meme coin might be a slow Tuesday. We compare the move to how much the asset normally moves, so a harder call is worth more than an easy one of the same size.
Because all four carry equal weight, the CallRank Score is simply their average. Here's how they come together on one real-shape call:
In the next 2 weeks, BTC runs up to $108,000 (+20%) by day 5, then dips to $84,000 (−7%) by day 9, and finishes at $96,000 on day 14.
M = 0.20, T = 14 days → tanh(25.0723 × 0.20 ÷ √14) = 0.87. A big, fast delivery.
$18k up vs $6k down = 18 ÷ 24 = 0.75. A perfectly clean run would be 1.0.
Price was above the $90k anchor for ~65% of the 2-week window. The mid-window dip pulled this down.
BTC normally moves ≈ 7.8% in 5 days (3.5% × √5). The 20% caught was ~2.6× that — very impressive for BTC.
Reading: A strong call. Magnitude says they delivered real size, Quality says it was a big move even by BTC's standards, Cleanliness says it was meaningfully one-sided (3× more favorable than adverse, just not perfect), and Time in Favor says the mid-window dip kept them from being on the right side the whole way through.
We monitor 150 public crypto accounts on X and ingest every public post on a daily refresh.
Our AI pipeline pulls the asset, direction, any conditional trigger and the timeframe — from the text, the chart, or both. Posts with no scoreable forecast are filtered out.
We set the anchor price where the scoring clock starts — the first 15-min close after the post, or the candle that confirms a trigger — then track candles to the deadline.
When the window closes, the call is scored on the four components above and averaged — 25% each. Every number is auditable.
Each forecaster's calls are averaged into one CallRank Score, ranked #1–150, and refreshed daily with full audit trails.
Many crypto forecasters don't make flat predictions — they post conditional calls like "If BTC holds $98k, then I'm bullish." We recognize five types of conditional triggers:
| Type | What it means | Activation | Example post |
|---|---|---|---|
| Hold / Defend | Price must hold a level — closing on the same side of it for multiple consecutive candles | Requires a defined number of consecutive confirming closes on the appropriate candle timeframe | "If $2,680 holds as support..." |
| Break / Close | Price must close through a level (in either direction) to activate | A single confirming close beyond the stated level | "If we break $100k..." |
| Reclaim | Price must close back across a previously crossed level and sustain it | Requires consecutive confirming closes back across the level | "If ETH reclaims $2,830..." |
| Sweep / Wick | Price wicks through a level intraday, typically followed by a reversal in the opposite direction | Evaluated using candle wicks rather than closes — fast resolution | "If they sweep $2,680 lows..." |
| Retest / Bounce | Price approaches a level from either side and reverses from it | Evaluated when price wicks to the level and moves away | "Retest $2,830 as support..." |
The exact number of confirming candles required for each trigger type, and the candle timeframe used for evaluation, are calibrated based on the type of trigger and the chart timeframe referenced in the post. These parameters are part of our proprietary scoring rubric.
If a conditional trigger is never met during the evaluation window, the forecast is marked as "not triggered" and does not count toward the forecaster's score — no penalty, no reward. Only triggered forecasts enter the scoring set.
Every forecast has a maximum evaluation window — the time period during which the prediction is considered "live" and price action is tracked against it. This window is determined using a strict priority cascade. Lower steps never override higher ones:
If the post states an explicit timeframe (e.g., "within 7 days", "by Friday", "next week"), that timeframe is used directly. If matched, no further steps are evaluated.
If no explicit timeframe is stated but a chart is attached (or a chart timeframe is referenced in the text, e.g., "on the 4H"), we identify the candle duration of the chart and map it to an evaluation window using the table below. If matched, no further steps are evaluated.
| Chart Timeframe | Evaluation Window | In Plain Terms | Approx. Candles |
|---|---|---|---|
| 15-minute | 1 day | 1 day | ~96 |
| 30-minute | 2 days | 2 days | ~96 |
| 45-minute | 3 days | 3 days | ~96 |
| 1-hour | 3 days | 3 days | ~72 |
| 2-hour | 5 days | 5 days | ~60 |
| 3-hour | 7 days | 1 week | ~56 |
| 4-hour | 7 days | 1 week | ~42 |
| 6-hour | 14 days | 2 weeks | ~56 |
| 8-hour | 14 days | 2 weeks | ~42 |
| 12-hour | 21 days | 3 weeks | ~42 |
| Daily | 30 days | 1 month | ~30 |
| 2-day | 45 days | ~6 weeks | ~22 |
| 3-day | 60 days | 2 months | ~20 |
| Weekly | 90 days | 3 months | ~13 |
| Bi-weekly | 120 days | 4 months | ~8 |
| Monthly | 180 days | 6 months | ~6 |
For chart timeframes not listed, we round to the nearest row. If exactly between two rows, the shorter (more conservative) window is used.
If neither an explicit timeframe nor a chart timeframe is available, our AI pipeline infers the intended timeframe from the language and context of the post (e.g., "looking for a move soon" vs. "long-term thesis"). This is the fallback and is only used when Steps 1 and 2 produce no result.
Once the evaluation window closes, the forecast is scored against the market data from that period. The window is never extended beyond available market data. If the post explicitly states a timeframe, that always takes precedence over the chart-based lookup or AI inference.
CallRank scores public crypto forecasters based on their forecasts published on X. Scores reflect how a forecaster's public predictions compare to historical market data over a defined evaluation window. CallRank scores public posts only. CallRank does not score private communications, private accounts, or any data the forecaster has not chosen to publish.
Stage 1: Claim Extraction. An automated pipeline reads public X posts and identifies the forecast within each post: the asset, predicted direction, time horizon, and any attached conditions. This stage requires judgment. As the pipeline reads natural-language posts intended for human readers, misinterpretations can occur — misreading attached charts, misclassifying direction, misidentifying the time horizon, or misinterpreting irony, sarcasm, or conditional language. Mistaken output at this stage is possible.
Stage 2: Scoring. Once a claim is extracted, the scoring computation is mechanical. The pipeline compares the extracted forecast to historical market data from public sources and records how price actually moved within the window. Every component of a score traces back to a specific public post and market-data check, so any reader can follow the references from a score back to the original post and the data it was checked against.
What a CallRank score is. Evaluative commentary on a forecaster's track record, derived from a disclosed method applied to public data. Scores, rankings, and labels are not factual assertions about a forecaster's character, competence, or fitness. The same method applies to every scored forecaster; CallRank does not alter it based on identity, follower count, or payment status.
What a CallRank score is not. Not financial, investment, or trading advice. Not a recommendation to follow, hire, fire, invest with, or avoid any forecaster. Not a prediction of future accuracy. Not an assessment of a person's character or intent. Not a guarantee of correctness — any specific score may be wrong.
Verify or correct a score. This page publishes the full method, data sources, and scoring formula. Any reader can verify a score by following the audit trail back to the underlying public posts and market-data checks. If you're a forecaster who believes a score about you is incorrect, the correction process is published here; submitted corrections are reviewed against the same audit trail, and confirmed errors are revised. Dispute a score →
CallRank.AI is a measurement and analytics platform. Nothing on this site constitutes financial advice, investment advice, trading advice, or any other kind of professional advice. CallRank.AI does not recommend any forecaster, asset, or trading strategy.
Past results do not guarantee future results. All data is provided "as is" without warranty of any kind, express or implied. Rankings, scores, and analytics reflect historical observations from public posts and should not be relied upon as the sole basis for any investment or trading decision.
CallRank.AI is not a substitute for independent research or qualified financial advice. By using CallRank.AI, you acknowledge that you are solely responsible for your own trading and investment decisions, and that CallRank.AI bears no liability for any losses incurred.
We measure forecast accuracy, not trading profit. From a public post we can't see entries, exits, position sizes, leverage, or stop-losses — so we never estimate ROI or P&L. A forecaster can be highly accurate and still lose money with poor risk management, and the reverse is just as true. CallRank scores the call, not the trade. We also don't reward the wording itself — confident phrasing and hedged phrasing are scored on what price actually did, nothing more.