Piyasa Analizi için NLP — Haber ve Sosyal Duygu İşleme

Doğal dil işleme, kripto para ticaretinde kritik bir rol oynamaktadır. Haber duyuruları, sosyal medya duyarlılığı ve düzenleyici söylentiler, zincir üstü sinyaller ortaya çıkmadan piyasaları hareketlendirir. Bu rehber, yapılandırılmamış metinlerden eyleme dönüştürülebilir bilgi çıkarma sürecinde size yol gösterir — Smart Money API'deki duygu puanlamasını güçlendiren aynı teknikler.

Önemli bilgi: Yalnızca duygu analizi, kısa vadeli hareketlerin sadece %48'ini tahmin edebilir. Ancak balina konsensüsü ve fonlama oranları ile birleştirildiğinde? Duygu onaylı işlemler %61 doğruluk sağlar. İşte çoklu modal sinyallerin gücü budur.

Duygu Analizi Temelleri

Sözlük Tabanlı vs Makine Öğrenimi Yaklaşımları

Sözlük tabanlı: Pozitif/negatif kelimeler sözlüğü (VADER, TextBlob). Hızlı, yorumlanabilir, ancak alay ve bağlamla başa çıkmakta zorlanır.

Python — Sözlük tabanlı duygu analizi
from nltk.sentiment import SentimentIntensityAnalyzer
analyzer = SentimentIntensityAnalyzer()
texts = [
"Bitcoin, yükselişe geçen kurumsal benimseme haberleriyle %15 yükseldi",
"Çöküş geliyor — fon oranı negatifliğine dayanarak %40 düşüş bekleniyor",
"Karma sinyaller ancak balinalar ETH biriktiriyor"
]
for text in texts:
scores = analyzer.polarity_scores(text)
print(f"{text[:40]}... → {scores['compound']:.2f}")

Çıktı: Bileşik puanlar -1 (en negatif) ile +1 (en pozitif) arasında değişir. 0.65 puanı pozitif duygu, -0.42 ise negatif duygu gösterir.

ML tabanlı: Sınıflandırıcılar eğitin (Naive Bayes, SVM) veya önceden eğitilmiş dönüştürücüler kullanın (BERT, RoBERTa). Daha doğru ancak etiketli veri gerektirir.

Kripto Para Haberlerini İşleme

Gerçek Zamanlı Haber Toplama

Ana kaynaklardan başlıkları çekin (CoinTelegraph, BlockBeats, Cointelegraph RSS, Reddit):

Python — Haber işleme hattı
import feedparser
from datetime import datetime, timedelta
# Kripto haberleri için RSS beslemeleri
feeds = [
"https://cointelegraph.com/feed",
"https://www.coindesk.com/arc/outboundfeeds/rss/",
]
articles = []
for feed_url in feeds:
feed = feedparser.parse(feed_url)
for entry in feed.entries[:10]:
articles.append({
"title": entry.title,
"published": entry.published_parsed,
"summary": entry.summary,
})

Kripto Varlıklar için Adlandırılmış Varlık Tanıma (NER)

Hangi tokenların/borsaların bahsedildiğini çıkarın:

Python — Kripto için NER
import spacy
nlp = spacy.load("en_core_web_sm")
# Kripto için özel varlık desenleri
crypto_entities = {"Bitcoin", "BTC", "Ethereum", "ETH", "Solana", "SOL"}
text = "Bitcoin %12 yükseldi çünkü Ethereum balinaları büyük miktarlarda biriktiriyor"
doc = nlp(text)
for token in doc:
if token.text in crypto_entities:
print(f"{token.text} bulundu")

Sosyal Duygu Madenciliği

Twitter/X API Entegrasyonu

Belirli varlıklar için bahisleri, duyarlılığı ve etkileşimi takip edin:

Python — Twitter duygu akışı
import tweepy
from transformers import pipeline
sentiment_pipeline = pipeline("sentiment-analysis", model="distilbert-base-uncased-finetuned-sst-2-english")
# Twitter API v2 ile kimlik doğrulama
client = tweepy.Client(bearer_token=TWITTER_BEARER)
# Son bir saatte Bitcoin hakkında tweetleri ara
query = "Bitcoin -is:retweet lang:en"
tweets = client.search_recent_tweets(query=query, max_results=100)
sentiments = []
for tweet in tweets.data:
result = sentiment_pipeline(tweet.text)[0]
sentiments.append({
"text": tweet.text,
"label": result["label"],
"score": result["score"]
})
avg_sentiment = sum(s["score"] for s in sentiments) / len(sentiments)
print(f"Bitcoin duyarlılık skoru: {avg_sentiment:.2f}")

Reddit Topluluğu Duyarlılığı

r/cryptocurrency, r/btc, r/ethtrader'da perakende yatırımcı duyarlılık değişimlerini izleyin:

Python — Reddit duyarlılık analizi
import praw
reddit = praw.Reddit(client_id=ID, client_secret=SECRET, user_agent=AGENT)
subreddit = reddit.subreddit("cryptocurrency")
# Son 24 saatte popüler olan gönderileri al
for post in subreddit.hot(limit=50):
if post.created_utc > (time.time() - 86400):
sentiment = sentiment_pipeline(post.title)[0]
# Yüksek oylar + olumlu duyarlılık = güçlü perakende boğa sinyali
signal_strength = post.score * sentiment["score"]

Üretim Duyarlılık Motoru Oluşturma

Transformer Tabanlı Duyarlılık (BERT)

Önceden eğitilmiş BERT modelleri, sözlük tabanlı yaklaşımlardan çok daha doğrudur:

Python — BERT duyarlılık işlem hattı
from transformers import AutoTokenizer, AutoModelForSequenceClassification
import torch
model_name = "ProsusAI/finbert" # FinBERT finansal haberler üzerine eğitilmiştir
tokenizer = AutoTokenizer.from_pretrained(model_name)
model = AutoModelForSequenceClassification.from_pretrained(model_name)
def get_finbert_sentiment(text):
inputs = tokenizer(text, return_tensors="pt")
with torch.no_grad():
outputs = model(**inputs)
logits = outputs.logits
probabilities = torch.softmax(logits, dim=1)
# Döndürür: negatif (0), nötr (1), pozitif (2)
sentiment_idx = torch.argmax(probabilities)
confidence = probabilities[0, sentiment_idx].item()
return {"sentiment": ["negative", "neutral", "positive"][sentiment_idx], "confidence": confidence}

Gerçek Zamanlı Duyarlılık Toplama

Birden fazla sinyali günlük bir duyarlılık skoruna dönüştürün:

Python — Bileşik duyarlılık
def compute_daily_sentiment(symbol):
# 1. Haber duyarlılığı (%40 ağırlık)
news_articles = fetch_recent_news(symbol)
news_sentiments = [get_finbert_sentiment(a["title"]) for a in news_articles]
news_score = np.mean([s["confidence"] for s in news_sentiments])
# 2. Twitter duyarlılığı (%35 ağırlık)
tweets = fetch_tweets_last_6h(symbol)
twitter_sentiments = [get_finbert_sentiment(t) for t in tweets]
twitter_score = np.mean([s["confidence"] for s in twitter_sentiments])
# 3. Reddit duyarlılığı (%25 ağırlık)
reddit_posts = fetch_reddit_hot(symbol)
reddit_sentiments = [get_finbert_sentiment(p) for p in reddit_posts]
reddit_score = np.mean([s["confidence"] for s in reddit_sentiments])
# Bileşik skor
composite = (news_score * 0.4 + twitter_score * 0.35 + reddit_score * 0.25)
return composite

Smart Money API ile Entegrasyon

Onay sisteminize duyarlılık özelliği ekleyin:

Python — Duyarlılık + Smart Money
def confirm_with_sentiment(symbol, direction):
# Smart Money onayını al
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 analizi yap
sentiment_score = compute_daily_sentiment(symbol)
# Yön ile sentiment uyumluysa güveni artır
if (direction == "long" and sentiment_score > 0.55):
boost = 0.05 # Güvene %5 ekle
elif (direction == "short" and sentiment_score < 0.45):
boost = 0.05
else:
boost = 0 # Sentiment çelişkisi
final_composite = min(smart_money["composite"] + boost, 1.0)
return {"composite": final_composite, "sentiment_boost": boost}

Gelişmiş NLP Teknikleri

Aspect-Based Sentiment Analysis

Genel sentiment yerine, belirli özellikler hakkındaki sentimentı çıkarın: "Bitcoin teknolojisi harika, ancak benimsenme yavaş." Özellik düzeyinde görüşleri analiz edin.

Causality Detection

Nedensel iddiaları tespit edin: "XYZ nedeniyle fiyat hareket edecek." Temel haberler ile spekülasyonu ayırt etmek için bir sınıflandırıcı eğitin.

Sentiment Time Series

Sentimentın zaman içindeki değişimini takip edin. +0.65'ten -0.45'e ani bir dönüş, not edilmesi gereken bir tersine dönüş sinyalidir.

Sentimentı akıllı para sinyalleriyle birleştirin

Smart Money API, balina konsensüsü ve on-chain metriklerle doğrulanmış güven skorları sağlar. Kazanma oranınızı %4-6 artırmak için sentiment analizini ekleyin.

Ücretsiz Başla →