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.
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):
import feedparser
from datetime import datetime, timedelta
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:
import spacy
nlp = spacy.load("en_core_web_sm")
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:
import tweepy
from 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 = []
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:
import praw
reddit = praw.Reddit(client_id=ID, client_secret=SECRET, user_agent=AGENT)
subreddit = reddit.subreddit("cryptocurrency")
for post in subreddit.hot(limit=50):
if post.created_utc > (time.time() - 86400):
sentiment = sentiment_pipeline(post.title)[0]
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:
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")
with 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}
Valós Idejű Hangulat Összesítés
Kombináljon több jelet egy napi hangulatpontszámba:
def compute_daily_sentiment(symbol):
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])
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])
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])
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ő:
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}
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 →