NLP untuk Analisis Pasaran — Memproses Berita dan Sentimen Sosial
Pemprosesan bahasa semula jadi telah menjadi kritikal dalam dagangan kripto. Pengumuman berita, sentimen media sosial, dan bisikan peraturan menggerakkan pasaran sebelum isyarat on-chain muncul. Panduan ini membawa anda melalui pengekstrakan maklumat yang boleh ditindak daripada teks tidak berstruktur — teknik yang sama yang menggerakkan penilaian sentimen dalam Smart Money API.
Wawasan utama: Sentimen sahaja meramalkan hanya 48% pergerakan jangka pendek. Tetapi apabila digabungkan dengan konsensus ikan paus dan kadar pembiayaan? Dagangan yang disahkan oleh sentimen mencapai ketepatan 61%. Itulah kekuatan isyarat multimodal.
Asas Analisis Sentimen
Pendekatan Berasaskan Leksikon vs Pembelajaran Mesin
Berasaskan leksikon: Kamus perkataan positif/negatif (VADER, TextBlob). Pantas, boleh ditafsirkan, tetapi bergelut dengan sarkasme dan konteks.
dari nltk.sentiment import SentimentIntensityAnalyzer
analyzer = SentimentIntensityAnalyzer()
teks = [
"Bitcoin melonjak 15% atas berita pengambilan institusi yang optimis",
"Kemalangan akan datang — jangkaan penurunan 40% berdasarkan fundrat neg",
"Isyarat bercampur tetapi ikan pus sedang mengumpul ETH"
]
untuk teks dalam teks:
skor = analyzer.polarity_scores(teks)
print(f"{teks[:40]}... → {skor['compound']:.2f}")
Output: Skor kompaun berjulat dari -1 (paling negatif) hingga +1 (paling positif). Skor 0.65 menunjukkan sentimen positif, -0.42 menunjukkan sentimen negatif.
Berasaskan ML: Latih pengelas (Naive Bayes, SVM) atau gunakan transformer yang telah dilatih (BERT, RoBERTa). Lebih tepat tetapi memerlukan data berlabel.
Memproses Berita Kripto
Pengumpulan Berita Masa Nyata
Tarik tajuk utama dari sumber utama (CoinTelegraph, BlockBeats, Cointelegraph RSS, Reddit):
import feedparser
dari datetime import datetime, timedelta
feeds = [
"https://cointelegraph.com/feed",
"https://www.coindesk.com/arc/outboundfeeds/rss/",
]
artikel = []
untuk feed_url dalam feeds:
feed = feedparser.parse(feed_url)
untuk entri dalam feed.entries[:10]:
artikel.append({
"title": entri.title,
"published": entri.published_parsed,
"summary": entri.summary,
})
Pengenalan Entiti Bernama (NER) untuk Aset Kripto
Ekstrak token/bursa yang disebut:
import spacy
nlp = spacy.load("en_core_web_sm")
crypto_entities = {"Bitcoin", "BTC", "Ethereum", "ETH", "Solana", "SOL"}
teks = "Bitcoin melonjak 12% apabila ikan paus Ethereum mengumpul jumlah yang besar"
doc = nlp(teks)
untuk token dalam doc:
jika token.teks dalam crypto_entities:
print(f"{token.teks} ditemui")
Melombong Sentimen Sosial
Integrasi API Twitter/X
Jejak sebutan, sentimen, dan penglibatan untuk aset tertentu:
import tweepy
dari 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 = []
untuk tweet dalam tweets.data:
result = sentiment_pipeline(tweet.text)[0]
sentiments.append({
"text": tweet.text,
"label": result["label"],
"score": result["score"]
})
avg_sentiment = sum(s["score"] untuk s dalam sentiments) / len(sentiments)
print(f"Sentimen Bitcoin: {avg_sentiment:.2f}")
Sentimen Komuniti Reddit
Pantau r/cryptocurrency, r/btc, r/ethtrader untuk perubahan sentimen runcit:
import praw
reddit = praw.Reddit(client_id=ID, client_secret=SECRET, user_agent=AGENT)
subreddit = reddit.subreddit("cryptocurrency")
untuk pos dalam subreddit.hot(limit=50):
jika post.created_utc > (time.time() - 86400):
sentiment = sentiment_pipeline(post.title)[0]
signal_strength = post.score * sentiment["score"]
Membina Enjin Sentimen Pengeluaran
Sentimen Berasaskan Transformer (BERT)
Model BERT yang telah dilatih lebih tepat daripada pendekatan berasaskan leksikon:
from 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")
dengan 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()
return {"sentiment": ["negative", "neutral", "positive"][sentiment_idx], "confidence": confidence}
Pengagregatan Sentimen Masa Nyata
Gabungkan pelbagai isyarat menjadi skor sentimen harian:
def compute_daily_sentiment(symbol):
news_articles = fetch_recent_news(symbol)
news_sentiments = [get_finbert_sentiment(a["title"]) untuk a dalam news_articles]
news_score = np.mean([s["confidence"] untuk s dalam news_sentiments])
tweets = fetch_tweets_last_6h(symbol)
twitter_sentiments = [get_finbert_sentiment(t) untuk t dalam tweets]
twitter_score = np.mean([s["confidence"] untuk s dalam twitter_sentiments])
reddit_posts = fetch_reddit_hot(symbol)
reddit_sentiments = [get_finbert_sentiment(p) untuk p dalam reddit_posts]
reddit_score = np.mean([s["confidence"] untuk s dalam reddit_sentiments])
composite = (news_score * 0.4 + twitter_score * 0.35 + reddit_score * 0.25)
return composite
Integrasi dengan Smart Money API
Tambahkan sentimen sebagai ciri kepada sistem pengesahan anda:
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}
Teknik NLP Lanjutan
Analisis Sentimen Beraspek
Daripada sentimen keseluruhan, ekstrak sentimen tentang aspek tertentu: "Teknologi Bitcoin hebat, tetapi penerimaan perlahan." Ekstrak pendapat pada tahap ciri.
Pengesanan Kausaliti
Kenal pasti tuntutan kausal: "Kerana XYZ, harga akan bergerak." Latih pengelas untuk membezakan hype daripada berita asas.
Siri Masa Sentimen
Jejak perubahan sentimen dari masa ke masa. Perubahan mendadak dari +0.65 ke -0.45 adalah isyarat pembalikan yang perlu diperhatikan.
Gabungkan sentimen dengan isyarat smart money
Smart Money API menyediakan skor keyakinan yang disahkan berdasarkan konsensus paus dan metrik on-chain. Tambah analisis sentimen untuk mengesahkan kelebihan anda dan meningkatkan kadar kemenangan sebanyak 4-6%.
Mulakan Percuma →