Methodology
How we capture, archive and grade.
The rules are public so anyone can check them, including the people we grade. Version 1.0 (September 29, 2026). Future changes are dated and never silently applied to past grades.
1. What counts as a call
A call is a public post that names an asset and a direction (long/bullish or short/bearish). The entry is always the market price at the time of the post, not a price the author mentions afterwards. Target, stop and timeframe are optional. If the author gives them, we use them.
Vague opinions without a clear direction ("looks strong", "watching this one", "interesting chart") are logged as Opinion and are not scored. Jokes, questions, pure news and reposts without comment are not logged at all.
One open thesis per asset and direction. Repeating a call does not create a new one. If a KOL posts again on the same asset in the same direction while an earlier call on it is still open (inside its horizon, target and stop not yet touched), the new post is a Re-affirmation: it is shown in the call log under the original call and not scored. A post counts as a new call only once the earlier call is resolved (target, stop or horizon end). A new or higher target posted while the call is open does not close it: the original call runs to its own resolution, and the new post is logged as a re-affirmation with a note such as “target raised to $X”. This keeps a KOL who posts the same idea ten times from getting ten chances, and stops loud re-posting from counting as extra calls.
2. Capture & archive
- We track a public watchlist of the most-followed crypto accounts on X. Live capture starts in October 2026.
- Each call is stored with post URL and ID, author, post timestamp (UTC), full text, a screenshot taken at capture, a SHA-256 fingerprint, and a public archive copy where available.
- Entry price = USD market price at the minute of the post, from public aggregated price data. The source and time are stored with the call. BTC's price at the same minute is stored as the benchmark.
3. Horizon
The author's stated timeframe wins (e.g. "by end of month", "this week", "next cycle"). A call with an explicit price target but no timeframe ("$ZEC to $100", "going for $6000") is graded as an Investment call with a 180-day horizon: a price target without a date is not a short-term trade, and 180 days gives it a fair chance. Vague words like "soon" do not count as a timeframe. Otherwise the call is classified at capture time from its wording and chart:
| Class | Horizon | Default target | Default stop | Typical wording |
|---|---|---|---|---|
| Trade / Scalp | 7 days | +15% | −15% | "scalp", "long here", intraday/4h chart, "quick flip" |
| Swing | 30 days | +30% | −25% | "swing", daily chart, "next few weeks", breakout/retest setups |
| Investment / Cycle | 180 days | +100% | −40% | "long term", "this cycle", "accumulating", weekly chart, "hold" |
Defaults apply only where the author gave no target or stop. For shorts they are mirrored (e.g. Trade short: target −15%, stop +15%). If a stated timeframe is given, it sets the horizon, and the closest class (≤14 days Trade, ≤90 days Swing, longer Investment) supplies any missing default target or stop.
The classification is fixed at capture and never changed later. Nobody, including us, can re-label a losing trade as an "investment" after the fact.
4. Outcome: first touch wins
Within the horizon, we check which level the price reaches first:
- Hit: the target is reached before the stop.
- Miss: the stop is reached before the target.
- Expired: neither level was reached by the end of the horizon. The call is scored by its return at horizon end compared with BTC over the same period.
Touches are checked on hourly highs and lows. If target and stop fall inside the same hour, 1-minute data decides. If it is still ambiguous, we record it as a Miss (conservative).
Worked example
A KOL posts "long $XYZ" at $1.00. No target, stop or timeframe is given. The next day the price drops to $0.80 (−20%). On day 6 it reaches $4.00 (+300%).
| If classified at capture as… | Stop | Target | First touch | Outcome |
|---|---|---|---|---|
| Trade (7 days) | $0.85 (−15%) | $1.15 (+15%) | Stop on day 1 | Miss (stopped out) |
| Swing (30 days) | $0.75 (−25%) | $1.30 (+30%) | Target, around day 6 | Hit |
| Investment (180 days) | $0.60 (−40%) | $2.00 (+100%) | Target on day 6 | Hit |
Same post, different outcomes. That's why the class is fixed at capture from the author's own wording and chart, never after the result is known. In all three cases we also record the worst price ($0.80, −20%) and the best price within the horizon.
5. Also recorded for every call
- Max favorable excursion (MFE): best price reached within the horizon.
- Max adverse excursion (MAE): worst price reached before exit, i.e. the pain a follower sat through.
- Return vs BTC: the call's return (to target, stop or horizon end; shorts inverted) minus BTC's return over the same period. This shows whether following the call beat simply holding Bitcoin.
- Deletion: if the author deletes the post, the call stays in the record as Deleted by author. A deleted call counts as a Miss, its return is measured at the price at deletion time (detected at our next check), and a deletion penalty applies to the Trust Score. Our archived screenshot and public archive link are shown as proof. See Delete Rate.
6. KOL Trust Score (0–100)
- 0–20 Fade
- 21–40 Caution
- 41–60 Neutral
- 61–80 Trusted
- 81–100 Elite
Eligibility: at least 10 scored calls (opinions don't count). Below that: "Not rated".
Quality beats volume. Posting 100 calls and getting 20 right must never beat posting 10 calls and getting 8 right. So the score looks at accuracy adjusted for sample size and at what following every call would have earned, not at how many calls someone makes.
Each scored call gets an outcome value: Hit = 1, Miss = 0, Expired = 0.5 ± half its excess return vs BTC relative to the class's default target (capped between 0 and 1). Deleted calls count as Miss (0).
| Component | Weight | What it measures |
|---|---|---|
| Adjusted hit rate | 40% | Bayesian-shrunk hit rate: (hits + 5) / (calls + 10), i.e. every KOL starts with a neutral prior of 5 hits out of 10 (50%). A single lucky call can't dominate: 1/1 = 55%, 9/10 = 70%, 20/100 = 23%. Hits are outcome values, so Expired calls count partially. |
| Expectancy per call | 35% | Average excess return vs BTC across all calls, losers included: "what if you had followed every single call?" Each call is normalized by its class's default target, so a 7-day trade and a 180-day investment are comparable. −1× target → 0 points, 0 → 50, +1× target → 100. |
| Drawdown pain | 25% | How deep calls went against followers before exit (MAE as a share of the class's default stop). No drawdown → 100, drawdown reaching the stop → 0. |
Volume itself earns nothing. More calls only make the estimate more certain, in either direction.
Penalties (subtracted after weighting):
- Deleted calls: −5 points per call deleted while in loss, −2 per call deleted while in profit (max −25 in total).
- Undisclosed paid promotion: −15 points per documented case of promoting an asset the KOL was paid for or held without disclosure (max −45). "Documented" means public evidence, linked in the record, after the KOL had a chance to respond.
Small samples are pulled toward 50 (neutral): Score = 50 + (Raw − Penalties − 50) × n / (n + 10), where n is the weighted number of scored calls (see §7). Result clipped to 0–100.
Example: sniper vs. spray-and-pray
Two callers, all calls classified as Swing (default target +30%, stop −25%), BTC flat over the period for simplicity. Hits exit at +30%, misses at −25%.
| Caller A | Caller B | |
|---|---|---|
| Scored calls (over 5 months) | 10 (2/month) | 100 (20/month) |
| Hits | 8 | 20 |
| Raw hit rate | 80% | 20% |
| Adjusted hit rate (hits+5)/(calls+10) | 13/20 = 65% | 25/110 = 23% |
| Expectancy per call vs BTC | (8×30% − 2×25%)/10 = +19% | (20×30% − 80×25%)/100 = −14% |
| Assumed avg drawdown | 10% | 20% |
| Raw score (40/35/25) | ≈ 70 | ≈ 23 |
| After sample-size adjustment | 50 + 20 × 10/20 ≈ 60 (Neutral, upper end) | 50 − 27 × 100/110 ≈ 26 (Caution) |
| Badge | Selective once rated | — |
Following every call of B would have lost about 14% per call; following A would have gained about 19%. B's 20 wins look impressive in screenshots, but the record says otherwise. If A keeps the same quality for 20 calls, the score rises to about 64 (Trusted). One-off lucky calls (1/1) stay near neutral.
Selectivity badge
A rated KOL gets the Selective badge when they average 8 or fewer scored calls per month, have an adjusted hit rate of at least 60% and a positive expectancy vs BTC. The badge doesn't change the score. It just highlights callers who speak rarely and are usually right.
Delete Rate & red flags
Delete Rate = deleted calls ÷ tracked calls, counting only calls we archived live (from October 2026). For historical calls we can't know what was deleted before we started watching, so they are excluded from this metric.
- 🚩 Deleter: Delete Rate of 10% or more with at least 3 deleted calls.
- 🚩 Deletes losers: at least 3 deleted calls, and 75% or more of them were losing at the time of deletion.
Flags appear on the scorecard and the KOL's profile, next to a list of every deleted call with our archived screenshot, fingerprint and archive.org link. Thresholds may be tuned as data comes in. Changes will be dated here. Deleting a call is a documented fact; the flag describes a pattern, not intent.
7. Historical vs live calls
We may add older calls retroactively, but only if the post is still online and can be archived. They are labeled Historical: deletions unknown and count with weight 0.5 in the Trust Score, because losing calls that were deleted before we started watching are invisible (survivorship bias). Calls captured live from October 2026 count with weight 1.0. Historical calls use the same classification and outcome rules, with the entry price taken at the original post time.
8. Market-wide KOL Trust Index
The average Trust Score of all rated KOLs who posted at least one call in the last 30 days, weighted by their number of calls in that period. Shown once at least 20 KOLs are rated.
9. KOL Consensus (sentiment, not advice)
For each asset, open calls from rated KOLs are combined: bullish = +1, bearish = −1 (±2 if the author stated both target and timeframe), each weighted by max(0, (Trust Score − 40) / 60). KOLs in the Fade and Caution zones carry no weight. The weighted average (−1…+1) maps to: ≤ −0.6 Very Bearish · ≤ −0.2 Bearish · < 0.2 Neutral · < 0.6 Bullish · ≥ 0.6 Very Bullish. Shown only when at least 5 rated KOLs have open calls on the asset.
This summarizes what tracked KOLs are saying. It is not a recommendation by iShowMoney.
10. Our own calls
iShowMoney's calls on Our Calls follow exactly the same rules: entry at post time, class fixed at publish time, first-touch outcome. They receive their own Trust Score.
11. Fair use & right of reply
- We quote and screenshot public posts by public accounts to report on and critique their track record, always alongside the grade and with a link to the original.
- KOLs can dispute any record (misread direction, wrong class, wrong price, wrong timestamp). Contact us on X (@ishowmoney_com, mention or DM) with the call link and your reasoning. We review every dispute. Corrections are logged publicly with date and reason. If a dispute is rejected, we explain why.
- Disputes can correct errors. They can't re-classify a call after the result is known.
- No one can pay to change a score, and sponsors are never graded more favorably.
12. Limitations
Detecting calls and classifying them involves judgment and AI-assisted screening. Every call is graded by a documented, reproducible rule set; the interpretation of each post is shown next to it. Corrections: contact us (see right of reply). Aggregated prices can differ slightly from individual exchanges. A Trust Score describes past public calls only. It says nothing about a person's character or future results.