市場センチメント分析
ソーシャルメディアやニュース、オンチェーンデータから、言及頻度や恐怖・貪欲指数、インフルエンサーの動向などを分析し、市場のセンチメント(投資家心理)を把握する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本体の挙動とは独立した参考情報です。
下記のコマンドをコピーしてターミナル(Mac/Linux)または PowerShell(Windows)に貼り付けてください。 ダウンロード → 解凍 → 配置まで全自動。
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
$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. 下の青いボタンを押して
sentiment-analysis.zipをダウンロード - 2. ZIPファイルをダブルクリックで解凍 →
sentiment-analysisフォルダができる - 3. そのフォルダを
C:\Users\あなたの名前\.claude\skills\(Win)または~/.claude/skills/(Mac)へ移動 - 4. Claude Code を再起動
⚠️ ダウンロード・利用は自己責任でお願いします。当サイトは内容・動作・安全性について責任を負いません。
🎯 このSkillでできること
下記の説明文を読むと、このSkillがあなたに何をしてくれるかが分かります。Claudeにこの分野の依頼をすると、自動で発動します。
📦 インストール方法 (3ステップ)
- 1. 上の「ダウンロード」ボタンを押して .skill ファイルを取得
- 2. ファイル名の拡張子を .skill から .zip に変えて展開(macは自動展開可)
- 3. 展開してできたフォルダを、ホームフォルダの
.claude/skills/に置く- · macOS / Linux:
~/.claude/skills/ - · Windows:
%USERPROFILE%\.claude\skills\
- · macOS / Linux:
Claude Code を再起動すれば完了。「このSkillを使って…」と話しかけなくても、関連する依頼で自動的に呼び出されます。
詳しい使い方ガイドを見る →- 最終更新
- 2026-05-18
- 取得日時
- 2026-05-18
- 同梱ファイル
- 1
📖 Skill本文(日本語訳)
※ 原文(英語/中国語)を Gemini で日本語化したものです。Claude 自身は原文を読みます。誤訳がある場合は原文をご確認ください。
センチメント分析
ソーシャルメディア、ニュースフィード、およびオンチェーンデータから市場のセンチメントを抽出し定量化して、群衆のポジショニングと潜在的な逆張り機会を特定します。
この Skill を使用するタイミング
- ポジションに入るまたは出る前に、群衆のセンチメントを測定する
- 反転に先行する陶酔感/パニックの極端な状態を検出する
- トレンドの早期検出のために、ソーシャルでの言及速度を監視する
- 特定のトークンに関するインフルエンサーの活動を追跡する
- システマティックな戦略のために、複合センチメントスコアを構築する
コアコンセプト
センチメントデータソース
| ソース | データ型 | アクセス |
|---|---|---|
| Twitter/X | 投稿テキスト、エンゲージメント、フォロワー数 | API (有料ティア) |
| サブレディットの投稿、コメント、賛成票 | 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) |
| 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 sourcesreferences/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 signalsscripts/keyword_sentiment.py— Standalone keyword-based text sentiment analyzer with synthetic demo data