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 comeRsiIndicatoreAnomalousVolumeIndicatorsono 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:
- Nelle funzioni
check_...diSignalEngine(es.if last_rsi > overbought:...). - All’interno del metodo
next()di una strategia utente (es.if self.rsi.iloc[self.i] < 30:...). Come avevamo discusso, non abbiamo ancora una classeSignalformalizzata, ma è la logica che usa gli indicatori per creare eventi.
- Nelle funzioni
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
BaseStrategye dalle sue implementazioni. Il metodoinit()prepara gli indicatori, e il metodonext()usa la loro output per interpretare i segnali e prendere le decisioni dibuy()esell().
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
BacktestWorkero nella UI, e viene eseguita dopo che ilBacktestEngineha prodotto il log dei trade. Questo è il candidato perfetto per il nostro prossimo grande refactoring: la creazione di un modulofire/analytics_core/metrics.
Tabella Riassuntiva
| Termine | Domanda Chiave | Esempio | Implementazione in FIRE |
|---|---|---|---|
| Indicatore | Qual è lo stato del mercato? | La linea dell’RSI | Classi in analytics_core/indicator_implementations/ |
| Segnale | C’è un evento notevole ora? | L’RSI ha superato 70 | Logica if/else in SignalEngine e BaseStrategy.next() |
| Strategia | Come devo operare? | Compra a RSI < 30, vendi a RSI > 70 | Classi che ereditano da BaseStrategy |
| Metrica | Come è 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.