1. Overview & Mission
In traditional finance, assets are evaluated using fundamental parameters like earnings reports, cash flow, and debt ratios. In cryptocurrency, these metrics are often absent, thin, or heavily distorted.
Instead, cryptocurrency pricing behaves like a reflexive Keynesian beauty contest: prices fluctuate based on collective market psychology, crowd narratives, and leveraged liquidation points.
MoodMetrics is a quantitative sentiment aggregator designed to map this psychology. The system continuously ingests raw text, community upvote metrics, funding distributions, and volatility indexes, converting unstructured emotional signals into a standardized, mathematical index from -100 (extreme fear and panic) to +100 (extreme greed and bullish momentum).
2. Why Sentiment Matters
Most traders rely heavily on price-chart indicators (e.g. RSI, MACD, Bollinger Bands). While useful, these are lagging metrics; they only tell you that a price moved after the order book has already executed the trades.
Sentiment, on the other hand, acts as a **leading indicator**. Price cascades in crypto are rarely linear. They happen when:
- Fear Cascades: Retail investors panic-post on social boards, leading to spot market distributions.
- Leverage Wipes: Too many traders use high leverage. If funding rates skew positive, long traders are paying shorts to keep contracts open, leaving them highly vulnerable to a drop that triggers a chain-reaction of liquidations.
- Narrative Divergence: Traditional media publishes positive news articles, but community forums remain intensely skeptical. This divergence often indicates that the market is overextended.
By quantifying the raw emotional data and leverage skew before they affect spot prices, MoodMetrics provides traders with a way to assess systemic risk.
3. The Ingestion Layers
MoodMetrics gathers data across four distinct layers, capturing different time horizons and participant behaviors:
L1 — The Flash Ingestion Layer (45% Weight)
This layer measures short-term sentiment momentum. It parses breaking headlines from RSS news syndications (including CoinDesk, Cointelegraph, Decrypt, and Cryptoslate) and integrates real-time community upvotes/downvotes from CoinGecko.
L2 — The Historic Community Layer (35% Weight)
This layer monitors dedicated asset forums (e.g. r/bitcoin, r/ethereum, r/solana) using sequential, anti-blocking public scrapers. It captures retail consensus and long-term narrative baseline trends.
L3 — The Perpetual Funding Rates Layer (15% Weight)
Queries perpetual swap contracts directly from the Binance Futures API. Positive rates show long leverage build-ups; negative rates indicate heavy short contract skews.
L4 — The Global Fear & Greed Index (5% Weight)
Pulls the global daily Fear & Greed index from alternative.me. It reflects macro market volatility, trading volume, search trend popularity, and social spikes.
4. Blended Score Logic
To create a unified sentiment metric, the system processes each layer into a normalized value between -1.0 (extremely bearish) and +1.0 (extremely bullish), aggregates them using predefined weights, and multiplies the final result by 100.
Blended Score = [(L1 × 0.45) + (L2 × 0.35) + (L3 × 0.15) + (L4 × 0.05)] × 100
Each component score is normalized as follows:
- L1 (Flash) and L2 (Reddit) Normalization: Raw articles and forum posts are parsed by Llama 3.1, which outputs an exact sentiment score from -1.0 to +1.0. These individual scores are averaged together.
- L3 (Funding Rate) Normalization: Perpetual swap funding rates typically hover between -0.05% and +0.05% per 8 hours. We divide the raw funding rate by 0.001 (representing 0.10% premium) and cap the result:
Funding Score = clamp(Rate / 0.001, -1.0, 1.0) - L4 (Fear & Greed) Normalization: The raw index is a value from 0 to 100. We center it around neutral (50) and map it:
Fear & Greed Score = clamp((Index - 50) / 50, -1.0, 1.0)
5. Recency & Virality Math
Crypto markets shift rapidly. To ensure the timeseries index is responsive without losing its baseline signal, the blending engine applies two mathematical adjustments:
A. Exponential Recency Decay
Social media conversations degrade in relevance quickly. The system treats post age with a **half-life decay calculation of 12 hours**:
Where t is the hours elapsed since ingestion. A post from 12 hours ago carries only half the weight of a fresh post.
B. Source Credibility Scaling
To prevent noisy social media comments from drowning out factual news, weights are scaled by source:
- Traditional News RSS: 100% (1.0 weight)
- CoinGecko Curated Feeds: 90% (0.9 weight)
- Public Reddit Posts: 70% (0.7 weight)
C. Logarithmic Upvote Boost
Highly upvoted social posts reflect strong community consensus. Rather than multiplying linearly (which would allow a single viral post to crash the index), we apply a **log-scaled upvote multiplier**:
This boost is added to the post's base weight. A post with 1,000 upvotes gets a substantial weight boost, but remains clamped within safe thresholds.
6. Interpreting Verdicts
The final score displays on the cockpit dashboard in one of three states, showing the corresponding market bias:
News is constructive, Reddit threads are optimistic, perpetual funding is positive (longs paying shorts), and global fear & greed is high. This setup favors spot accumulation or momentum long trades.
Mixed signals. For example, bullish Reddit chatter might be cancelled out by negative derivatives funding, or positive RSS news might meet extreme macro fear. This indicates a range-bound market, suggesting caution or trend breakout monitoring.
Outbound news is pessimistic, forums are panicking, and perpetual swap funding is negative (shorts paying longs, showing heavy short positioning skew). This indicates high systemic risk, favoring capital preservation or hedging.
7. Metrics & Visualizations Reference
To extract actionable quantitative signals from qualitative text datasets, MoodMetrics presents multiple telemetry layers across the Dashboard and AI Records pages.
Blended Score vs. Average Text Sentiment
A multi-layer **Macro sentiment index** compiled on the fly. It aggregates social media text (Llama-parsed Reddit posts), curated feeds, traditional News RSS articles, derivatives leverage skew (Binance funding rates), and global macro-sentiments (Fear & Greed index).
Importance: Captures leverage dynamics and contrarian sentiment indicators. It prevents social media noise from misrepresenting actual capital positioning.
A **Micro text sentiment average** computed directly from the Neon database. It represents the simple arithmetic mean score of only the individual textual records (Reddit comments, news briefs) that match your active search and filter queries.
Importance: Isolates pure public and journalistic written bias. It allows researchers to drill down into keyword-specific, timeline-bound textual changes without macro index distortions.
A. Historical Sentiment Timeline
The Historical Sentiment Timeline plots sentiment changes over time. It is calculated by dividing the selected timeframe (24h, 7d, or 30d) into equal chronological buckets. The system aggregates all sentiment records falling inside each bucket, computes their arithmetic mean, and connects these data points using an SVG Bezier spline:
This chart enables users to trace the visual alignment of sentiment peaks and troughs with actual coin price movements.
B. AI Verdict Scatter Matrix
The scatter matrix maps the active record subset on a coordinate space. The X-axis represents the **AI Sentiment Score** (-1.0 to +1.0) and the Y-axis represents the **AI Classifier Confidence** (0% to 100%).
- Bearish Zone: Plotted on the left (negative scores). Color-coded in rose.
- Neutral Zone: Plotted in the center (near 0.0). Color-coded in gray/zinc.
- Bullish Zone: Plotted on the right (positive scores). Color-coded in emerald.
This scatter plot immediately highlights high-confidence sentiment outliers and tracks whether bullish or bearish sentiment dominates the conversation density.
C. AI Classifier Confidence
Calculated directly by the **Llama 3.1 8B Model** for each individual ingestion piece. It represents the model's self-reported certainty when assigning a classification label (Bullish, Bearish, or Neutral).
A high confidence score (e.g. >85%) indicates that the underlying post contains strong, unambiguous language (e.g., "buying more, price target is up 50%"). A lower confidence score indicates conflicting text, mixed sentiment statements, or high stylistic noise.
