NLP para sa Pagsusuri sa Market — Pagproseso ng Balita at Social Sentiment
Ang natural language processing ay naging kritikal sa crypto trading. Ang mga anunsyo ng balita, sentiment sa social media, at mga bulong tungkol sa regulasyon ay nagpapagalaw sa merkado bago lumitaw ang mga on-chain signal. Gabay na ito ay maglalakad sa iyo sa pagkuha ng actionable intelligence mula sa unstructured text — ang parehong mga teknik na nagpapagana sa sentiment scoring sa Smart Money API.
Pangunahing pananaw: Ang sentiment lamang ay naghuhula lamang ng 48% ng mga short-term na paggalaw. Ngunit kapag isinama sa whale consensus at funding rates? Ang mga trade na kinumpirma ng sentiment ay nakakamit ng 61% na accuracy. Iyan ang kapangyarihan ng multi-modal signals.
Mga Pundasyon ng Sentiment Analysis
Lexicon-Based vs Machine Learning Approaches
Lexicon-based: Diksyunaryo ng mga positibo/negatibong salita (VADER, TextBlob). Mabilis, madaling maunawaan, ngunit nahihirapan sa sarcasm at konteksto.
mula nltk.sentiment import SentimentIntensityAnalyzer
analyzer = SentimentIntensityAnalyzer()
texts = [
"Bitcoin surged 15% on bullish institutional adoption news",
"Crash incoming — expect 40% dump based on fundrat neg",
"Mixed signals but whales are accumulating ETH"
]
para text sa texts:
scores = analyzer.polarity_scores(text)
print(f"{text[:40]}... → {scores['compound']:.2f}")
Output: Ang mga compound score ay mula sa -1 (pinaka-negatibo) hanggang +1 (pinaka-positibo). Ang score na 0.65 ay nagpapahiwatig ng positibong sentiment, -0.42 ay nagpapahiwatig ng negatibo.
ML-based: Sanayin ang mga classifier (Naive Bayes, SVM) o gumamit ng pre-trained transformers (BERT, RoBERTa). Mas tumpak ngunit nangangailangan ng labeled data.
Pagproseso ng Balita sa Cryptocurrency
Real-Time News Aggregation
Kumuha ng mga headline mula sa mga pangunahing pinagmumulan (CoinTelegraph, BlockBeats, Cointelegraph RSS, Reddit):
import feedparser
mula datetime import datetime, timedelta
feeds = [
"https://cointelegraph.com/feed",
"https://www.coindesk.com/arc/outboundfeeds/rss/",
]
articles = []
para feed_url sa feeds:
feed = feedparser.parse(feed_url)
para entry sa feed.entries[:10]:
articles.append({
"title": entry.title,
"published": entry.published_parsed,
"summary": entry.summary,
})
Named Entity Recognition (NER) para sa Crypto Assets
Kunin kung aling mga token/exchange ang binanggit:
import spacy
nlp = spacy.load("en_core_web_sm")
crypto_entities = {"Bitcoin", "BTC", "Ethereum", "ETH", "Solana", "SOL"}
text = "Bitcoin surged 12% as Ethereum whales accumulated large amounts"
doc = nlp(text)
para token sa doc:
kung token.text sa crypto_entities:
print(f"{token.text} found")
Pagmimina ng Social Sentiment
Twitter/X API Integration
Subaybayan ang mga pagbanggit, sentiment, at engagement para sa mga partikular na asset:
import tweepy
mula transformers import pipeline
sentiment_pipeline = pipeline("sentiment-analysis", model="distilbert-base-uncased-finetuned-sst-2-english")
client = tweepy.Client(bearer_token=TWITTER_BEARER)
query = "Bitcoin -is:retweet lang:en"
tweets = client.search_recent_tweets(query=query, max_results=100)
sentiments = []
para tweet sa tweets.data:
result = sentiment_pipeline(tweet.text)[0]
sentiments.append({
"text": tweet.text,
"label": result["label"],
"score": result["score"]
})
avg_sentiment = sum(s["score"] para sa s sa sentiments) / len(sentiments)
print(f"Sentimyento sa Bitcoin: {avg_sentiment:.2f}")
Sentimyento ng Komunidad sa Reddit
Subaybayan ang r/cryptocurrency, r/btc, r/ethtrader para sa pagbabago ng sentimyento ng retail:
import praw
reddit = praw.Reddit(client_id=ID, client_secret=SECRET, user_agent=AGENT)
subreddit = reddit.subreddit("cryptocurrency")
para sa post sa subreddit.hot(limit=50):
kung post.created_utc > (time.time() - 86400):
sentiment = sentiment_pipeline(post.title)[0]
signal_strength = post.score * sentiment["score"]
Pagbuo ng Production Sentiment Engine
Transformer-Based Sentiment (BERT)
Ang pre-trained na BERT models ay mas tumpak kaysa sa lexicon-based na mga pamamaraan:
mula sa transformers import AutoTokenizer, AutoModelForSequenceClassification
import torch
model_name = "ProsusAI/finbert"
tokenizer = AutoTokenizer.from_pretrained(model_name)
model = AutoModelForSequenceClassification.from_pretrained(model_name)
def get_finbert_sentiment(text):
inputs = tokenizer(text, return_tensors="pt")
gamit ang torch.no_grad():
outputs = model(**inputs)
logits = outputs.logits
probabilities = torch.softmax(logits, dim=1)
sentiment_idx = torch.argmax(probabilities)
confidence = probabilities[0, sentiment_idx].item()
ibalik {"sentiment": ["negative", "neutral", "positive"][sentiment_idx], "confidence": confidence}
Real-Time Sentiment Aggregation
Pagsamahin ang maraming signal sa isang daily sentiment score:
def compute_daily_sentiment(symbol):
news_articles = fetch_recent_news(symbol)
news_sentiments = [get_finbert_sentiment(a["title"]) para sa a sa news_articles]
news_score = np.mean([s["confidence"] para sa s sa news_sentiments])
tweets = fetch_tweets_last_6h(symbol)
twitter_sentiments = [get_finbert_sentiment(t) para sa t sa tweets]
twitter_score = np.mean([s["confidence"] para sa s sa twitter_sentiments])
reddit_posts = fetch_reddit_hot(symbol)
reddit_sentiments = [get_finbert_sentiment(p) para sa p sa reddit_posts]
reddit_score = np.mean([s["confidence"] para sa s sa reddit_sentiments])
composite = (news_score * 0.4 + twitter_score * 0.35 + reddit_score * 0.25)
ibalik composite
Integrating with Smart Money API
Idagdag ang sentimyento bilang feature sa iyong confirmation system:
def confirm_with_sentiment(symbol, direction):
response = requests.get(
f"https://api.smartmoneyapi.com/v1/confirm?symbol={symbol}&direction={direction}",
headers={"X-API-Key": API_KEY}
)
smart_money = response.json()
sentiment_score = compute_daily_sentiment(symbol)
if (direction == "long" and sentiment_score > 0.55):
boost = 0.05
elif (direction == "short" and sentiment_score < 0.45):
boost = 0.05
else:
boost = 0
final_composite = min(smart_money["composite"] + boost, 1.0)
return {"composite": final_composite, "sentiment_boost": boost}
Mga Advanced na Teknik sa NLP
Pagsusuri ng Sentimyento Batay sa Aspeto
Sa halip na pangkalahatang sentimyento, kunin ang sentimyento tungkol sa partikular na aspeto: "Mahusay ang teknolohiya ng Bitcoin, ngunit mabagal ang pagtanggap." Kunin ang mga opinyon sa antas ng feature.
Pagtuklas ng Sanhi at Bunga
Kilalanin ang mga pag-angkin ng sanhi: "Dahil sa XYZ, gagalaw ang presyo." Sanayin ang isang classifier upang makilala ang hype mula sa pangunahing balita.
Serye ng Oras ng Sentimyento
Subaybayan ang pagbabago ng sentimyento sa paglipas ng panahon. Ang biglaang pagbabago mula +0.65 patungong -0.45 ay isang senyales ng pagbabalik na dapat pansinin.
Pagsamahin ang sentimyento sa mga senyales ng smart money
Ang Smart Money API ay nagbibigay ng mga marka ng kumpiyansa na napatunayan laban sa consensus ng whale at mga sukat sa on-chain. Idagdag ang pagsusuri ng sentimyento upang kumpirmahin ang iyong edge at dagdagan ang win rate ng 4-6%.
Magsimula Nang Libre →