← Dashboard

Come funziona lo scoring

Dal testo grezzo di un articolo alla raccomandazione finale BUY / HOLD / SELL

Articolinews scraping
Scoreper articolo
Aggregatomedia ticker
SegnaleBUY/HOLD/SELL
Confidence0 – 1

Dettaglio fase per fase

1
Score per articolo   GPT  FinBERT  Hybrid
Ogni articolo riceve uno score in [-1.0 … +1.0]. Il metodo dipende dal provider in config.json:
ProviderCome produce lo score
GPT openai GPT assegna un numero −1/+1 e una label positive / negative / neutral. Lo score è estratto dal testo via regex.
FinBERT finbert Il modello locale restituisce 3 probabilità softmax (pos, neg, neu).
score = p_positive − p_negative → range [−1, +1]. Zero costo API.
Hybrid hybrid FinBERT produce score e confidence.
hybrid_gpt_threshold (0.80) → solo FinBERT.
< soglia → GPT aggiunge key_points e reasoning; lo score resta quello di FinBERT.
2
Score aggregato del ticker
Gli score di tutti gli articoli vengono mediati:
average_score = Σ score_i / N articoli
La label aggregata segue la stessa soglia (±0.3) sull'average_score.
Vengono contati anche positive_count, negative_count, neutral_count — usati per il calcolo della confidence.
3
Segnale — BUY / HOLD / SELL
Logica a priorità decrescente (primo match vince):
CondizioneSegnale
average_score ≥ 0.70BUY
average_score ≤ −0.50SELL
average_score > 0.30 AND price_change_5g > +2%BUY momentum
average_score < −0.30 AND price_change_5g < −2%SELL momentum
nessuna delle precedentiHOLD
price_change_5g = variazione % rispetto al prezzo di 5 sedute fa, su dati reali yFinance (storico 3 mesi). Se il prezzo non è disponibile le righe momentum non vengono valutate.
4
Confidence (0 – 1)
Somma di tre contributi, clamped in [0, 1]:
confidence = 0.50                    (base)
              + |average_score| × 0.30   (forza del sentiment)
              + agreement_ratio × 0.20   (concordanza articoli, se N ≥ 3)
agreement_ratio = max(positive_count, negative_count) / total_articles
Scenario esempioConfidence
score 0.0, 1 articolo0.50
score 0.7, 1 articolo0.71
score 0.7, 5 articoli tutti positivi0.91
score −0.9, 5 articoli tutti negativi→ clamped a 1.00
5
Indicatori tecnici (contesto)
Calcolati da yFinance su 3 mesi di storico — mostrati in dashboard, non modificano il segnale:
IndicatoreFormula
RSI 14Rolling 14 giorni gain/loss medi (Wilder smoothing)
OBVΣ Volume × segno(variazione giornaliera)
Prezzo attualeUltimo close · usato per il calcolo del momentum (price_change_5g)

Soglie configurabili — config.json

ChiaveDefaultSignificato
threshold_buy 0.70 Score minimo per BUY diretto
threshold_sell −0.50 Score massimo per SELL diretto
momentum_buy_score 0.30 Score minimo per BUY da momentum
momentum_sell_score −0.30 Score massimo per SELL da momentum
momentum_price_change_pct 2.0 % Variazione prezzo 5g per attivare il momentum
provider openai Algoritmo sentiment: openai / finbert / hybrid
hybrid_gpt_threshold 0.80 Confidence FinBERT sotto cui si chiama GPT (solo modalità hybrid)