jpskill.com
💼 ビジネス コミュニティ

市場センチメント分析

sentiment-analysis

ソーシャルメディアやニュース、オンチェーンデータから、言及頻度や恐怖・貪欲指数、インフルエンサーの動向などを分析し、市場のセンチメント(投資家心理)を把握するSkill。

📜 元の英語説明(参考)

Market sentiment extraction from social media, news, and on-chain data including mention velocity, fear and greed indices, and influencer tracking

🇯🇵 日本人クリエイター向け解説

一言でいうと

ソーシャルメディアやニュース、オンチェーンデータから、言及頻度や恐怖・貪欲指数、インフルエンサーの動向などを分析し、市場のセンチメント(投資家心理)を把握するSkill。

※ jpskill.com 編集部が日本のビジネス現場向けに補足した解説です。Skill本体の挙動とは独立した参考情報です。

⚡ おすすめ: コマンド1行でインストール(60秒)

下記のコマンドをコピーしてターミナル(Mac/Linux)または PowerShell(Windows)に貼り付けてください。 ダウンロード → 解凍 → 配置まで全自動。

🍎 Mac / 🐧 Linux
mkdir -p ~/.claude/skills && cd ~/.claude/skills && curl -L -o sentiment-analysis.zip https://jpskill.com/download/10433.zip && unzip -o sentiment-analysis.zip && rm sentiment-analysis.zip
🪟 Windows (PowerShell)
$d = "$env:USERPROFILE\.claude\skills"; ni -Force -ItemType Directory $d | Out-Null; iwr https://jpskill.com/download/10433.zip -OutFile "$d\sentiment-analysis.zip"; Expand-Archive "$d\sentiment-analysis.zip" -DestinationPath $d -Force; ri "$d\sentiment-analysis.zip"

完了後、Claude Code を再起動 → 普通に「動画プロンプト作って」のように話しかけるだけで自動発動します。

💾 手動でダウンロードしたい(コマンドが難しい人向け)
  1. 1. 下の青いボタンを押して sentiment-analysis.zip をダウンロード
  2. 2. ZIPファイルをダブルクリックで解凍 → sentiment-analysis フォルダができる
  3. 3. そのフォルダを C:\Users\あなたの名前\.claude\skills\(Win)または ~/.claude/skills/(Mac)へ移動
  4. 4. Claude Code を再起動

⚠️ ダウンロード・利用は自己責任でお願いします。当サイトは内容・動作・安全性について責任を負いません。

🎯 このSkillでできること

下記の説明文を読むと、このSkillがあなたに何をしてくれるかが分かります。Claudeにこの分野の依頼をすると、自動で発動します。

📦 インストール方法 (3ステップ)

  1. 1. 上の「ダウンロード」ボタンを押して .skill ファイルを取得
  2. 2. ファイル名の拡張子を .skill から .zip に変えて展開(macは自動展開可)
  3. 3. 展開してできたフォルダを、ホームフォルダの .claude/skills/ に置く
    • · macOS / Linux: ~/.claude/skills/
    • · Windows: %USERPROFILE%\.claude\skills\

Claude Code を再起動すれば完了。「このSkillを使って…」と話しかけなくても、関連する依頼で自動的に呼び出されます。

詳しい使い方ガイドを見る →
最終更新
2026-05-18
取得日時
2026-05-18
同梱ファイル
1

📖 Skill本文(日本語訳)

※ 原文(英語/中国語)を Gemini で日本語化したものです。Claude 自身は原文を読みます。誤訳がある場合は原文をご確認ください。

センチメント分析

ソーシャルメディア、ニュースフィード、およびオンチェーンデータから市場のセンチメントを抽出し定量化して、群衆のポジショニングと潜在的な逆張り機会を特定します。

この Skill を使用するタイミング

  • ポジションに入るまたは出る前に、群衆のセンチメントを測定する
  • 反転に先行する陶酔感/パニックの極端な状態を検出する
  • トレンドの早期検出のために、ソーシャルでの言及速度を監視する
  • 特定のトークンに関するインフルエンサーの活動を追跡する
  • システマティックな戦略のために、複合センチメントスコアを構築する

コアコンセプト

センチメントデータソース

ソース データ型 アクセス
Twitter/X 投稿テキスト、エンゲージメント、フォロワー数 API (有料ティア)
Reddit サブレディットの投稿、コメント、賛成票 Reddit API
Telegram チャンネルメッセージ、メンバー数 Bot API またはスクレイピング
Discord サーバーアクティビティ、メッセージ量 Bot 統合
News 見出し、記事テキスト NewsAPI, RSS フィード
CoinGecko コミュニティ統計、開発者の活動 無料 API
Alternative.me Fear & Greed Index 無料 API
オンチェーン 資金調達率、取引所のフロー 取引所 API

各ソースの完全な API の詳細、レート制限、およびアクセスパターンについては、references/data_sources.md を参照してください。

センチメントメトリクス

言及速度 (Mention Velocity) — 時間経過に伴うトークンの言及率:

mention_velocity = mentions_last_hour / baseline_hourly_mentions
# > 3.0 = トレンド入り, > 10.0 = バズり

センチメント極性 (Sentiment Polarity) — ポジティブ vs ネガティブなトーン:

polarity = (positive_count - negative_count) / total_count
# 範囲: -1.0 (すべてネガティブ) から +1.0 (すべてポジティブ)

Fear & Greed Index — 複合的な市場心理 (0-100):

範囲 ラベル 典型的なシグナル
0-24 極度の恐怖 (Extreme Fear) 潜在的な買い集めゾーン
25-44 恐怖 (Fear) 平均以下のセンチメント
45-55 ニュートラル (Neutral) 強い方向性バイアスなし
56-74 強欲 (Greed) 平均以上のセンチメント
75-100 極度の強欲 (Extreme Greed) 潜在的な売り抜けゾーン

ソーシャルボリューム (Social Volume) — プラットフォーム全体の総言及数:

social_volume_z = (current_volume - mean_30d) / std_30d
# z > 2.0 は異常な活動を示唆

オンチェーンセンチメントプロキシ

オンチェーンデータは、参加者が言っていることだけでなく、何をしているかを明らかにします。

資金調達率 (Funding Rates) — 無期限先物のコスト:

# プラスの資金調達 = ロングがショートに支払う (強気の偏り)
# マイナスの資金調達 = ショートがロングに支払う (弱気の偏り)
funding_sentiment = -1.0 * normalize(funding_rate, -0.1, 0.1)
# 反転: 高いプラスの資金調達は逆張りの弱気

ロング/ショート比率 (Long/Short Ratio) — レバレッジポジションの割合:

ls_ratio = long_accounts / short_accounts
# > 2.0 = ロングの偏り, < 0.5 = ショートの偏り
ls_sentiment = -1.0 * normalize(ls_ratio, 0.5, 2.0)

取引所のフロー (Exchange Flows) — 純預金/引き出し:

net_flow = exchange_inflows - exchange_outflows
# プラスのネットフロー (預金) = 弱気 (売り圧力)
# マイナスのネットフロー (引き出し) = 強気 (買い集め)
flow_sentiment = -1.0 * normalize(net_flow, -threshold, threshold)

キーワードベースのセンチメントスコアリング

キュレーションされた単語リストを使用した、シンプルで LLM フリーのアプローチ:

BULLISH_KEYWORDS = {
    "moon": 2, "bullish": 2, "pump": 1, "breakout": 2,
    "buy": 1, "long": 1, "accumulate": 2, "undervalued": 2,
    "gem": 1, "rocket": 1, "ath": 1, "rally": 2,
}
BEARISH_KEYWORDS = {
    "dump": 2, "bearish": 2, "crash": 2, "scam": 3,
    "rug": 3, "sell": 1, "short": 1, "overvalued": 2,
    "dead": 2, "rekt": 1, "ponzi": 3, "exit": 1,
}

def score_text(text: str) -> float:
    """テキストを -1.0 (弱気) から +1.0 (強気) でスコアリングします。"""
    words = text.lower().split()
    bull_score = sum(BULLISH_KEYWORDS.get(w, 0) for w in words)
    bear_score = sum(BEARISH_KEYWORDS.get(w, 0) for w in words)
    total = bull_score + bear_score
    if total == 0:
        return 0.0
    return (bull_score - bear_score) / total

完全な方法論、時間的減衰の重み付け、および複合スコアの構築については、references/scoring_methods.md を参照してください。

複合センチメントスコア

複数のシグナルを単一のスコアに結合します。

def composite_sentiment(
    social_polarity: float,    # -1.0 から +1.0
    mention_velocity: float,   # 0 から inf
    fear_greed: int,           # 0 から 100
    funding_rate: float,       # -0.1 から +0.1
    weights: dict | None = None,
) -> float:
    """重み付けされた複合センチメントスコア (-100 から +100) を計算します。

    Args:
        social_polarity: ソーシャルでの言及の平均極性。
        mention_velocity: 現在の速度とベースラインの比較。
        fear_greed: Fear & Greed index の読み取り値。
        funding_rate: 現在の無期限資金調達率。
        weights: オプションのカスタム重み。

    Returns:
        -100 (極度の恐怖) から +100 (極度の強欲) までの複合スコア。
    """
    w = weights or {
        "social": 0.30,
        "velocity": 0.15,
        "fear_greed": 0.30,
        "funding": 0.25,
    }
    # 各コンポーネントを -1.0 から +1.0 に正規化
    s_social = social_polarity
    s_velocity = min(mention_velocity / 10.0, 1.0)  # 最大 10 倍に制限
    s_fg = (fear_greed - 50) / 50.0  # 0-100 -> -1 から +1
    s_funding = -10.0 * funding_rate  # 逆張り: 高い資金調達 = 弱気
    s_funding = max(-1.0, min(1.0, s_funding))

    raw = (
        w["social"] * s_social
        + w["velocity"] * s_velocity
        + w["fear_greed"] * s_fg
        + w["funding"] * s_funding
    )
    return round(raw * 100, 1)

逆張りシグナル

極端なセンチメントの読み取りは、しばしば反転に先行します。

条件 解釈
Composite < -70 極度の恐怖 — 歴史的に買いゾーン
Composite > +70 極度の強欲 — 歴史的に売りゾーン
Velocity > 10x + polarity > 0.6 陶酔感のスパイク — フェードの可能性
Velocity > 10x + polarity < -0.6 パニックスパイク — 反発の可能性
Funding > 0.05% + LS ratio > 2.0 ロングの偏り — 清算リスク
Funding < -0.05% + LS ratio < 0.5 ショートの偏り — ショートスクイズのリスク

キー原則: セン

📜 原文 SKILL.md(Claudeが読む英語/中国語)を展開

Sentiment Analysis

Extract and quantify market sentiment from social media, news feeds, and on-chain data to identify crowd positioning and potential contrarian opportunities.

When to Use This Skill

  • Gauge crowd sentiment before entering or exiting a position
  • Detect euphoria/panic extremes that precede reversals
  • Monitor social mention velocity for early trend detection
  • Track influencer activity around specific tokens
  • Build composite sentiment scores for systematic strategies

Core Concepts

Sentiment Data Sources

Source Data Type Access
Twitter/X Post text, engagement, follower counts API (paid tiers)
Reddit Subreddit posts, comments, upvotes Reddit API
Telegram Channel messages, member counts Bot API or scraping
Discord Server activity, message volume Bot integration
News Headlines, article text NewsAPI, RSS feeds
CoinGecko Community stats, developer activity Free API
Alternative.me Fear & Greed Index Free API
On-chain Funding rates, exchange flows Exchange APIs

See references/data_sources.md for complete API details, rate limits, and access patterns for each source.

Sentiment Metrics

Mention Velocity — Rate of token mentions over time:

mention_velocity = mentions_last_hour / baseline_hourly_mentions
# > 3.0 = trending, > 10.0 = viral

Sentiment Polarity — Positive vs negative tone:

polarity = (positive_count - negative_count) / total_count
# Range: -1.0 (all negative) to +1.0 (all positive)

Fear & Greed Index — Composite market mood (0-100):

Range Label Typical Signal
0-24 Extreme Fear Potential accumulation zone
25-44 Fear Below-average sentiment
45-55 Neutral No strong directional bias
56-74 Greed Above-average sentiment
75-100 Extreme Greed Potential distribution zone

Social Volume — Total mentions across platforms:

social_volume_z = (current_volume - mean_30d) / std_30d
# z > 2.0 suggests unusual activity

On-Chain Sentiment Proxies

On-chain data reveals what participants are doing, not just saying:

Funding Rates — Perpetual futures cost of carry:

# Positive funding = longs pay shorts (bullish crowding)
# Negative funding = shorts pay longs (bearish crowding)
funding_sentiment = -1.0 * normalize(funding_rate, -0.1, 0.1)
# Inverted: high positive funding is contrarian bearish

Long/Short Ratio — Proportion of leveraged positions:

ls_ratio = long_accounts / short_accounts
# > 2.0 = crowded long, < 0.5 = crowded short
ls_sentiment = -1.0 * normalize(ls_ratio, 0.5, 2.0)

Exchange Flows — Net deposits/withdrawals:

net_flow = exchange_inflows - exchange_outflows
# Positive net flow (deposits) = bearish (selling pressure)
# Negative net flow (withdrawals) = bullish (accumulation)
flow_sentiment = -1.0 * normalize(net_flow, -threshold, threshold)

Keyword-Based Sentiment Scoring

A simple, LLM-free approach using curated word lists:

BULLISH_KEYWORDS = {
    "moon": 2, "bullish": 2, "pump": 1, "breakout": 2,
    "buy": 1, "long": 1, "accumulate": 2, "undervalued": 2,
    "gem": 1, "rocket": 1, "ath": 1, "rally": 2,
}
BEARISH_KEYWORDS = {
    "dump": 2, "bearish": 2, "crash": 2, "scam": 3,
    "rug": 3, "sell": 1, "short": 1, "overvalued": 2,
    "dead": 2, "rekt": 1, "ponzi": 3, "exit": 1,
}

def score_text(text: str) -> float:
    """Score text from -1.0 (bearish) to +1.0 (bullish)."""
    words = text.lower().split()
    bull_score = sum(BULLISH_KEYWORDS.get(w, 0) for w in words)
    bear_score = sum(BEARISH_KEYWORDS.get(w, 0) for w in words)
    total = bull_score + bear_score
    if total == 0:
        return 0.0
    return (bull_score - bear_score) / total

See references/scoring_methods.md for the full methodology, temporal decay weighting, and composite score construction.

Composite Sentiment Score

Combine multiple signals into a single score:

def composite_sentiment(
    social_polarity: float,    # -1.0 to +1.0
    mention_velocity: float,   # 0 to inf
    fear_greed: int,           # 0 to 100
    funding_rate: float,       # -0.1 to +0.1
    weights: dict | None = None,
) -> float:
    """Compute weighted composite sentiment score (-100 to +100).

    Args:
        social_polarity: Average polarity of social mentions.
        mention_velocity: Current velocity vs baseline.
        fear_greed: Fear & Greed index reading.
        funding_rate: Current perpetual funding rate.
        weights: Optional custom weights.

    Returns:
        Composite score from -100 (extreme fear) to +100 (extreme greed).
    """
    w = weights or {
        "social": 0.30,
        "velocity": 0.15,
        "fear_greed": 0.30,
        "funding": 0.25,
    }
    # Normalize each component to -1.0 to +1.0
    s_social = social_polarity
    s_velocity = min(mention_velocity / 10.0, 1.0)  # Cap at 10x
    s_fg = (fear_greed - 50) / 50.0  # 0-100 -> -1 to +1
    s_funding = -10.0 * funding_rate  # Contrarian: high funding = bearish
    s_funding = max(-1.0, min(1.0, s_funding))

    raw = (
        w["social"] * s_social
        + w["velocity"] * s_velocity
        + w["fear_greed"] * s_fg
        + w["funding"] * s_funding
    )
    return round(raw * 100, 1)

Contrarian Signals

Extreme sentiment readings often precede reversals:

Condition Interpretation
Composite < -70 Extreme fear — historically a buying zone
Composite > +70 Extreme greed — historically a selling zone
Velocity > 10x + polarity > 0.6 Euphoric spike — fade potential
Velocity > 10x + polarity < -0.6 Panic spike — bounce potential
Funding > 0.05% + LS ratio > 2.0 Crowded long — liquidation risk
Funding < -0.05% + LS ratio < 0.5 Crowded short — squeeze risk

Key principle: Sentiment is most useful at extremes. Neutral readings (composite between -30 and +30) have low predictive value.

Influencer Tracking

Monitor high-follower accounts for early signal detection:

def influencer_signal(
    posts: list[dict],
    min_followers: int = 50_000,
    lookback_hours: int = 24,
) -> dict:
    """Detect influencer activity around a token.

    Args:
        posts: List of posts with 'followers', 'timestamp', 'sentiment'.
        min_followers: Minimum follower count to qualify as influencer.
        lookback_hours: Time window in hours.

    Returns:
        Dict with influencer_count, avg_sentiment, total_reach.
    """
    cutoff = time.time() - (lookback_hours * 3600)
    relevant = [
        p for p in posts
        if p["followers"] >= min_followers and p["timestamp"] >= cutoff
    ]
    if not relevant:
        return {"influencer_count": 0, "avg_sentiment": 0.0, "total_reach": 0}
    return {
        "influencer_count": len(relevant),
        "avg_sentiment": sum(p["sentiment"] for p in relevant) / len(relevant),
        "total_reach": sum(p["followers"] for p in relevant),
    }

Integration With Other Skills

Skill Integration Point
position-sizing Reduce size in extreme greed, increase in extreme fear
risk-management Tighten stops when sentiment diverges from price
regime-detection Sentiment confirms or contradicts regime classification
feature-engineering Sentiment metrics as ML features
signal-classification Sentiment as input to signal scoring models
whale-tracking Combine whale activity with social sentiment
token-holder-analysis Holder growth/decline as sentiment proxy

Practical Workflow

1. Fetch fear/greed index          → Market-wide mood
2. Pull social data for token      → Token-specific sentiment
3. Score text with keyword method  → Polarity scores
4. Compute mention velocity        → Trending detection
5. Check on-chain proxies          → Funding, flows
6. Calculate composite score       → Single decision input
7. Flag contrarian signals         → Extreme readings
8. Integrate with position sizing  → Adjust allocation

Limitations and Warnings

  • Sentiment is noisy. Individual readings are unreliable — use trends and extremes.
  • Social data is gameable. Bot activity can inflate mention counts.
  • Keyword scoring is crude. It misses sarcasm, context, and nuance.
  • Lag exists. By the time sentiment is measurable, price may have moved.
  • Not financial advice. Sentiment data is for informational and analytical purposes only.
  • API access varies. Twitter/X API pricing has changed frequently. Budget accordingly.
  • Survivorship bias. Tokens that go to zero stop being discussed — absence of mentions is also a signal.

Files

References

  • references/data_sources.md — API details, rate limits, and access patterns for all sentiment data sources
  • references/scoring_methods.md — Keyword lists, composite scoring methodology, temporal decay, contrarian logic

Scripts

  • scripts/sentiment_scanner.py — Fetches live sentiment data from free APIs, computes composite scores, flags contrarian signals
  • scripts/keyword_sentiment.py — Standalone keyword-based text sentiment analyzer with synthetic demo data