1. Indicatore (Indicator)

  • Breve Descrizione: Un indicatore è una trasformazione matematica dei dati di mercato (prezzo e/o volume). Il suo scopo è distillare informazioni complesse in una forma più semplice e interpretabile, solitamente una o più serie numeriche (es. una linea su un grafico). Un indicatore descrive lo stato del mercato, ma non prescrive un’azione.
  • Domanda a cui risponde: “Qual è lo stato del momentum / della volatilità / del trend?”
  • Esempio: L’RSI (Relative Strength Index). Prende una serie di prezzi di chiusura e la trasforma in una nuova serie di valori che oscillano tra 0 e 100. Un valore di 80 descrive una condizione di forte momentum rialzista, ma non dice “vendi!“.
  • Come lo usiamo in FIRE: Questo è esattamente lo scopo del nostro nuovo Analytics Core. Le classi come RsiIndicator e AnomalousVolumeIndicator sono l’implementazione pura di questo concetto. Prendono in input un DataFrame e restituiscono un DataFrame o una Serie con i dati trasformati.

2. Segnale (Signal)

  • Breve Descrizione: Un segnale è l’interpretazione di un indicatore. È un evento discreto e specifico, generato quando un indicatore (o una combinazione di indicatori) soddisfa una condizione logica predefinita. A differenza di un indicatore, un segnale è un’ipotesi che suggerisce un’azione potenziale.
  • Domanda a cui risponde: “Sta succedendo qualcosa di interessante adesso?”
  • Esempio: “L’RSI ha incrociato al di sopra di 70”. Questo non è più una descrizione, è un evento puntuale. Altri esempi: “Si è formato un pattern Engulfing Bullish”, “Il volume di oggi è 5 volte la media”.
  • Come lo usiamo in FIRE: Attualmente, il concetto di “Segnale” è implicito. La logica che genera un segnale vive:
    1. Nelle funzioni check_... di SignalEngine (es. if last_rsi > overbought:...).
    2. All’interno del metodo next() di una strategia utente (es. if self.rsi.iloc[self.i] < 30:...). Come avevamo discusso, non abbiamo ancora una classe Signal formalizzata, ma è la logica che usa gli indicatori per creare eventi.

3. Strategia (Strategy)

  • Breve Descrizione: Una strategia è un sistema completo di regole che definisce come operare. È il “cervello” che utilizza uno o più segnali per prendere decisioni di trading. Non si limita a identificare un’opportunità, ma gestisce l’intero ciclo di vita di un’operazione: quando entrare, quando uscire e (spesso) come gestire la posizione.
  • Domanda a cui risponde: “Come dovrei operare in modo sistematico?”
  • Esempio: “Compra quando si verifica un segnale di Engulfing Bullish. Vendi dopo 10 barre o se il profitto raggiunge il 5%. Non aprire nuove posizioni se ne hai già una aperta”.
  • Come lo usiamo in FIRE: Questo concetto è perfettamente rappresentato dalla nostra classe BaseStrategy e dalle sue implementazioni. Il metodo init() prepara gli indicatori, e il metodo next() usa la loro output per interpretare i segnali e prendere le decisioni di buy() e sell().

4. Metrica (Metric)

  • Breve Descrizione: Una metrica è una misura statistica che valuta la performance di una strategia dopo che è stata eseguita su un set di dati. Le metriche non hanno a che fare con la logica di trading, ma con la sua valutazione ex-post.
  • Domanda a cui risponde: “Quanto è stata buona (o cattiva) la mia strategia?”
  • Esempio: Max Drawdown (la perdita massima dal picco al fondo), Sharpe Ratio (il rendimento corretto per il rischio), Total Return (il rendimento totale).
  • Come lo usiamo in FIRE: Questa è la parte meno formalizzata della nostra architettura attuale. La logica per calcolare le metriche è probabilmente contenuta nel BacktestWorker o nella UI, e viene eseguita dopo che il BacktestEngine ha prodotto il log dei trade. Questo è il candidato perfetto per il nostro prossimo grande refactoring: la creazione di un modulo fire/analytics_core/metrics.

Tabella Riassuntiva

TermineDomanda ChiaveEsempioImplementazione in FIRE
IndicatoreQual è lo stato del mercato?La linea dell’RSIClassi in analytics_core/indicator_implementations/
SegnaleC’è un evento notevole ora?L’RSI ha superato 70Logica if/else in SignalEngine e BaseStrategy.next()
StrategiaCome devo operare?Compra a RSI < 30, vendi a RSI > 70Classi che ereditano da BaseStrategy
MetricaCome è andata la mia strategia?Max Drawdown del -15%Logica non ancora centralizzata (prob. in BacktestWorker)

Altri Termini Utili da Aggiungere

  • Curva di Equity (Equity Curve): Il grafico che mostra l’andamento del capitale di un conto nel tempo, risultante dall’esecuzione di una strategia. È l’input primario per il calcolo di quasi tutte le metriche.
  • Backtesting: Il processo di simulazione di una strategia su dati storici per calcolarne le metriche di performance. È la funzione principale del nostro BacktestEngine.

Spero che questa spiegazione dettagliata chiarisca le distinzioni. Usare questi termini in modo corretto ci renderà molto più precisi ed efficienti.