NLP a piacanalízishez — Hírek és közösségi hangulat feldolgozása

A természetes nyelvfeldolgozás kulcsszerepet játszik a kriptovaluta-kereskedelemben. A hírek, a közösségi média hangulata és a szabályozási pletykák piacokat mozgathatnak, még mielőtt a láncon belüli jelek megjelennek. Ez az útmutató bemutatja, hogyan nyerhető ki használható információ strukturálatlan szövegből — ugyanazok a technikák, amelyek a Smart Money API hangulati pontozását hajtják.

Kulcsfontosságú betekintés: A hangulat önmagában csak 48%-ban jósolja meg a rövid távú mozgásokat. De ha kombináljuk a bálnák konszenzusával és a finanszírozási rátákkal? A hangulattal megerősített kereskedések 61%-os pontosságot érnek el. Ez a többmodális jelek ereje.

Az érzelmi elemzés alapjai

Szótár-alapú vs. gépi tanulásos megközelítések

Szótár-alapú: Pozitív/negatív szavak szótára (VADER, TextBlob). Gyors, értelmezhető, de nehezen kezeli a szarkazmust és a kontextust.

Python — Szótár-alapú hangulatelemzés
from nltk.sentiment import SentimentIntensityAnalyzer
analyzer = SentimentIntensityAnalyzer()
texts = [
"Bitcoin 15%-ot ugrott a bullis intézményi elfogadás híreire",
"Összeomlás közel — várható 40%-os esés a negatív finanszírozási ráta alapján",
"Vegyes jelek, de a bálnák ETH-t halmoznak"
]
for text in texts:
scores = analyzer.polarity_scores(text)
print(f"{text[:40]}... → {scores['compound']:.2f}")

Kimenet: A vegyes pontszámok -1 (legnegatívabb) és +1 (legpozitívabb) között mozognak. A 0,65-ös pontszám pozitív hangulatot, a -0,42 negatív hangulatot jelez.

ML-alapú: Oktasson osztályozókat (Naive Bayes, SVM) vagy használjon előre betanított transzformereket (BERT, RoBERTa). Pontosabb, de címkézett adatokra van szüksége.

Kriptovaluta hírek feldolgozása

Valós idejű hírgazdálkodás

Hírcímek lekérése nagyobb forrásokból (CoinTelegraph, BlockBeats, Cointelegraph RSS, Reddit):

Python — Hírfeldolgozó folyamat
import feedparser
from datetime import datetime, timedelta
# RSS feedek kriptovaluta hírekhez
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,
})

Entitásfelismerés (NER) kriptovalutákhoz

Kinyerés, hogy mely tokenek/tőzsédék szerepelnek:

Python — NER kriptovalutákhoz
import spacy
nlp = spacy.load("en_core_web_sm")
# Egyedi entitásminták kriptovalutákhoz
crypto_entities = {"Bitcoin", "BTC", "Ethereum", "ETH", "Solana", "SOL"}
text = "Bitcoin 12%-ot ugrott, miközben Ethereum-bálnák nagy mennyiséget halmoztak"
doc = nlp(text)
for token in doc:
if token.text in crypto_entities:
print(f"{token.text} megtalálva")

Közösségi hangulat bányászata

Twitter/X API integráció

Követés konkrét eszközökre vonatkozó említések, hangulat és részvétel:

Python — Twitter hangulat stream
import tweepy
from transformers import pipeline
sentiment_pipeline = pipeline("sentiment-analysis", model="distilbert-base-uncased-finetuned-sst-2-english")
# Hitelesítés a Twitter API v2-vel
client = tweepy.Client(bearer_token=TWITTER_BEARER)
# Bitcoinról szóló tweetek keresése az elmúlt órából
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 érzelmi állapot: {avg_sentiment:.2f}")

Reddit Közösségi Hangulat

Figyelje az r/cryptocurrency, r/btc, r/ethtrader közösségeket a kiskereskedelmi hangulatváltozásokért:

Python — Reddit hangulat
import praw
reddit = praw.Reddit(client_id=ID, client_secret=SECRET, user_agent=AGENT)
subreddit = reddit.subreddit("cryptocurrency")
# Legfrissebb posztok az elmúlt 24 órából
for post in subreddit.hot(limit=50):
if post.created_utc > (time.time() - 86400):
sentiment = sentiment_pipeline(post.title)[0]
# Magas upvote + pozitív hangulat = erős kiskereskedelmi bullish jel
signal_strength = post.score * sentiment["score"]

Termelési Hangulatmotor Építése

Transzformátor Alapú Hangulat (BERT)

Az előre betanított BERT modellek sokkal pontosabbak, mint a lexikon alapú megközelítések:

Python — BERT hangulat pipeline
from transformers import AutoTokenizer, AutoModelForSequenceClassification
import torch
model_name = "ProsusAI/finbert" # FinBERT pénzügyi híreken betanítva
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)
# Visszatérés: negatív (0), semleges (1), pozitív (2)
sentiment_idx = torch.argmax(probabilities)
confidence = probabilities[0, sentiment_idx].item()
return {"sentiment": ["negative", "neutral", "positive"][sentiment_idx], "confidence": confidence}

Valós Idejű Hangulat Összesítés

Kombináljon több jelet egy napi hangulatpontszámba:

Python — Összetett hangulat
def compute_daily_sentiment(symbol):
# 1. Hírek hangulata (40% súly)
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 hangulat (35% súly)
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 hangulat (25% súly)
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])
# Összetett
composite = (news_score * 0.4 + twitter_score * 0.35 + reddit_score * 0.25)
return composite

Integráció a Smart Money API-val

Adja hozzá a hangulatot a megerősítő rendszerhez mint jellemző:

Python — Hangulat + Smart Money
def confirm_with_sentiment(symbol, direction):
# Smart Money megerősítés lekérése
response = requests.get(
f"https://api.smartmoneyapi.com/v1/confirm?symbol={symbol}&direction={direction}",
headers={"X-API-Key": API_KEY}
)
smart_money = response.json()
# Hangulat elemzése
sentiment_score = compute_daily_sentiment(symbol)
# Bizalom növelése, ha a hangulat egyezik az iránnyal
if (direction == "long" and sentiment_score > 0.55):
boost = 0.05 # +5%-os bizalomnövekedés
elif (direction == "short" and sentiment_score < 0.45):
boost = 0.05
else:
boost = 0 # Érzelmi ütközések
final_composite = min(smart_money["composite"] + boost, 1.0)
return {"composite": final_composite, "sentiment_boost": boost}

Fejlett NLP technikák

Aspektus-alapú érzelmelemzés

A teljes érzelmek helyett kinyerjük az érzelmeket konkrét aspektusokról: "A Bitcoin technológia nagyszerű, de az elfogadottság lassú." Kinyerjük a jellemzők szintjén megnyilvánuló véleményeket.

Oksági kapcsolat felismerése

Azonosítsuk az ok-okozati állításokat: "Az XYZ miatt az ár mozogni fog." Képezzünk egy osztályozót, amely megkülönbözteti a hype-ot az alapvető hírektől.

Érzelmi idősorok

Követjük az érzelmek változását az idő múlásával. A +0,65-ről -0,45-re történő hirtelen fordulat érdemes figyelmet fordítani, mint fordulati jelet.

Kombináljuk az érzelmi elemzést az okos pénz jeleivel

A Smart Money API olyan megbízhatósági pontszámokat kínál, amelyeket bálnák konszenzusa és on-chain metrikák ellenőriztek. Adjuk hozzá az érzelmi elemzést, hogy megerősítsük az előnyünket és 4-6%-kal növeljük a nyerési arányt.

Kezdés ingyen →