Methodology v1.0.0
How a Conviction score is made.
Deterministic, versioned and published. The same evidence always produces the same result, and no language model touches the number.
Last updated: October 2026
CONVICTION answers one question: does observable capital evidence support what this post claims? It does not predict prices and it never tells you to buy or sell. This page documents methodology v1.0.0. Every stored score records the version that produced it, so any historical result can be replayed exactly.
1. Inputs
- The post (from your browser): post ID, author handle, timestamp, visible engagement counts (replies, reposts, likes, bookmarks, views), whether X marks it as an ad, the token references it contains, and the direction of its claim. Direction is derived locally from the text.
- Market evidence (DEX Screener): for the resolved token, up to the five deepest pairs on its chain, aggregated: liquidity, volume (5m/1h/6h/24h), buy and sell trade counts (1h/6h/24h), price change from the deepest pair, market cap/FDV, oldest pair age, active paid boosts and paid orders in the last 7 days.
- A second price source (DefiLlama, and CoinGecko when configured), used only to measure provider agreement.
- CONVICTION's own earlier observations of the same token, used for the liquidity trend.
2. Token identity comes first
A score about the wrong token is worse than no score. References are resolved in this priority order:
| Reference | Identity confidence |
|---|---|
| Contract or mint address in the post | 1 |
| Supported token or pair URL (DEX Screener, pump.fun, Birdeye, explorers…) | 1 |
| Cashtag in CONVICTION's curated registry of established assets (addresses verified against live data) | 0.95 |
| Token you picked in the CONVICTION card | 0.9 |
| Cashtag with exactly one credible on-chain market | 0.75 |
A cashtag candidate is credible only with at least $50,000 liquidity, $25,000 of 24h volume and 24h volume of at least 2% of its liquidity. The last rule filters pools with deep displayed liquidity but almost no real trading. If two or more credible tokens share a cashtag, CONVICTION shows Token identity uncertain and lets you choose. It never guesses. Stablecoins and assets native to unsupported chains are recognised and deliberately not scored. Equity tickers ($AAPL, $TSLA…) are ignored.
3. Named features
Every feature is named for exactly what it measures:
volume_acceleration_h1: last-hour volume ÷ (24h volume ÷ 24). 1.0 = the 24h hourly average.volume_acceleration_h6is the same over 6h.volume_to_liquidity_h24: 24h volume ÷ liquidity (turnover).buy_txn_share_h1/_h6/_h24: buys ÷ (buys + sells). These are trade counts, not dollar amounts.liquidity_change_pct: change in pooled liquidity (USD) against CONVICTION's own observation closest to 2h ago (between 20 minutes and 24h). Unavailable until we have one.price_change_h1_pct,_h6_pct,_h24_pct;price_volume_divergence: a 6h move of 15% or more on volume running below 70% of its 6h average.pair_age_hours,market_cap_usd,liquidity_to_mcap,boosts_active,recent_paid_orders.engagement_per_hour: (likes + 2 × reposts + replies + bookmarks) ÷ post age (min. 15 minutes);engagement_velocity_trend: accelerating/slowing against an earlier observation of the same post;engagement_rate: engagement ÷ views.claim_direction,claim_clarity,claim_sarcasm,claim_promotional: from an auditable keyword lexicon with negation handling.price_cross_check_deviation_pct,provider_coverage,identity_confidence,market_data_age_seconds.
4. Social attention (S, 0–100)
A log-scaled blend of engagement per hour (60%) and views per hour (40%). It saturates near 20,000 weighted engagements per hour and 500,000 views per hour, so a post with a handful of likes scores low and a viral post scores high. Paid promotion never raises S: DEX Screener boosts and X ads are disclosed and reduce confidence instead.
5. Capital activity (A, 0–100)
How active the market is, regardless of direction: hourly volume acceleration (35%), 6-hour volume acceleration (20%), turnover (25%) and last-hour trade count (20%), each log-scaled. If less than half of that weight is available, A is not computed.
6. Capital direction (D, −1 to +1)
| Component | Weight | Notes |
|---|---|---|
| Buy/sell trade-count imbalance (1h; 6h fallback) | 0.30 (0.25 on 6h) | Needs ≥ 20 trades in 1h or ≥ 40 in 6h. Saturates at a 65/35 split. |
| Liquidity trend | 0.35 | Saturates at ±15%. Only from CONVICTION's own observations. |
| Price momentum (6h, else 1h) | 0.20 | tanh-scaled; can never decide a result alone. |
| 24h trade-count imbalance | 0.10 | Needs ≥ 50 trades. |
D is the weighted average of the available components, but the divisor never falls below 0.66. Narrow evidence therefore cannot produce a strong lean: price movement on its own can move D by at most about 0.3.
7. Capital evidence for the claim (K, 0–100)
K = 50 + 50 × s × D × (0.5 + 0.5 × A/100), where s is +1 for a bullish or neutral post and −1 for a bearish one. A bearish post on a market that is selling off therefore gets a high K: the money agrees with the tweet. Posts with no clear direction are treated as positive attention (the Crypto X default), with reduced confidence.
8. Data confidence (0–100)
Confidence starts at 100 and is multiplied by every factor that applies:
| Condition | Factor |
|---|---|
| Token identity | identity confidence (table above) |
| Asset trades mostly off-DEX (BTC, ETH, SOL, BNB, LINK, UNI, AAVE, SHIB) | 0.80 |
| All volume data missing / some windows missing | 0.60 / 0.85 |
| Trade-count data missing | 0.60 |
| Price-change data missing | 0.85 |
| Liquidity unknown / < $10,000 / < $50,000 / < $250,000 | 0.60 / 0.40 / 0.70 / 0.90 |
| 24h trades unknown / < 50 / < 200 | 0.70 / 0.60 / 0.85 |
| No second price source / sources differ > 3% / disagree > 10% | 0.90 / 0.85 / 0.60 |
| Active paid DEX Screener promotion | 0.85 |
| Pair younger than 1h / 24h | 0.60 / 0.80 |
| Possible sarcasm / no clear direction / weakly stated direction | 0.70 / 0.85 / 0.90 |
| Post is a paid X ad | 0.85 |
| Freshness (below) | 1.00 → 0.30 |
Levels: High ≥ 75, Medium ≥ 55, Low ≥ 40. Below 40, the result is Insufficient evidence.
9. Freshness
| Age of market data | Label | Freshness | Confidence factor |
|---|---|---|---|
| ≤ 2 minutes | Live | 100 | 1.00 |
| ≤ 10 minutes | Recent | 90 | 0.90 |
| ≤ 30 minutes | Recent | 70 | 0.75 |
| ≤ 60 minutes | Stale | 40 | 0.50 |
| older | Stale | 15 | 0.30 |
Data older than an hour therefore cannot pass the confidence threshold: stale data never becomes fresh conviction.
10. States
Rules are evaluated in this order. The first match wins:
- Insufficient evidence: identity not resolved, no market data, no measurable direction, no post, or confidence below 40. No score is shown.
- Capital moved first: K ≥ 68, A ≥ 55, S < 30, a non-price component supports the claim by ≥ 0.25, and the evidence is not mixed.
- Capital confirms: K ≥ 65, non-price support as above, not mixed.
- Mixed evidence: components of magnitude ≥ 0.35 point in opposite directions, or price runs with the claim on slowing volume.
- Hype > Capital: S ≥ 45 with K ≤ 45; or S ≥ 55, S − K ≥ 25 and K < 55.
- Capital diverges: K ≤ 40 without meaningful attention.
- Otherwise Mixed evidence.
Neither price nor attention can produce “Capital confirms” on its own: a non-price capital component must support the claim.
11. The score
score = 50 + (K − 50) × confidence/100, rounded and bounded to 1–99. Low confidence pulls the score toward 50, so weak inputs can never produce an extreme score. The score is always shown with its state, reasons, evidence, confidence and freshness. A score is an evidence assessment, not a forecast.
12. Reasons and explanations
Two to four reasons are generated from fixed templates bound to the evidence (for example “Buy transactions 1.7× sells (count, last 1h)”) and ranked by their contribution. Contradicting evidence is listed separately in the evidence drawer. No generative model writes or alters any number, state or reason at runtime.
13. Determinism and versioning
- The engine has no network access and never reads the clock: evaluation time is an explicit input.
- Each result stores a hash of its inputs and of itself. Replaying the same inputs reproduces the result byte for byte (verified 1,000× in the release tests).
- Any change that could alter a result bumps the methodology version. Historical scores are never overwritten.
14. Known limitations
- Trade figures are counts of DEX trades, not dollar flows. Many small buys are not the same as large buying.
- V1 has no wallet-level data. CONVICTION does not identify wallets, cohorts or “smart money”.
- For assets that trade mostly on centralised exchanges, DEX activity is a partial view (hence the confidence penalty).
- Pooled liquidity in USD moves partly with the token's own price.
- Claim direction comes from a keyword lexicon. It handles negation and common sarcasm markers, but it can misread irony or context.
- Social attention reflects one post's visible engagement, not X-wide attention.
- Data comes from third parties and can be delayed, incomplete or wrong. See data sources and the risk disclosure.