Guida alla Creazione di Strategie con TimesFM in FIRE
A: Team di Sviluppo e Ricerca Strategie Data: 2025-10-27 Scopo: Fornire un framework, lezioni apprese e spunti creativi per lo sviluppo di strategie di trading che sfruttino le capacità predittive del modello TimesFM all’interno della piattaforma FIRE.
1. Il Contesto: Cos’è l’ “Edge” di TimesFM?
La nostra ricerca iniziale ha validato un punto fondamentale: il modello TimesFM, integrato nel nostro backtest engine, possiede un edge predittivo statisticamente significativo sulla direzione del prezzo a breve termine.
Tuttavia, abbiamo anche scoperto una lezione cruciale:
Un edge predittivo, da solo, non è sufficiente per creare una strategia profittevole. Il successo dipende interamente da come questo edge viene sfruttato attraverso una logica di trading e una gestione del rischio disciplinate.
Questo documento serve a guidarvi nella creazione di tale logica.
2. L’Architettura a Vostra Disposizione: Il Pre-Calcolo
Per garantire performance e semplicità, FIRE adotta un’architettura a pre-calcolo. Quando eseguite un backtest, il sistema prima “arricchisce” i dati storici con diverse colonne di forecast.
Come funziona per lo stratega:
All’interno dei vostri metodi init() e next(), avrete accesso a un DataFrame self.data che contiene, oltre alle classiche colonne OHLCV, anche:
forecast_hN: La previsione puntuale (mediana) aNperiodi nel futuro.forecast_lower_hN: La banda di confidenza inferiore (es. 5° percentile) aNperiodi.forecast_upper_hN: La banda di confidenza superiore (es. 95° percentile) aNperiodi.
Il vostro compito è usare queste colonne per definire le regole di ingresso e uscita.
3. Lezioni Apprese dalle Strategie Prototipo
Lezione 1: La Logica di Uscita è Sovrana
-
MomentumStrategyV1(Anti-Pattern): Usavaforecast > closeper entrare eforecast < closeper uscire.- Risultato: Molti trade, Win Rate alto (>60%), ma enormi perdite.
- Insegnamento: Una logica di uscita che è semplicemente l’inverso dell’ingresso è inefficace. Disaccoppiare la logica di ingresso da quella di uscita è fondamentale.
-
MomentumStrategyV2(Pattern Efficace): Usavaforecast > closeper entrare e untime exit(uscita dopoNbarre) per uscire.- Risultato: Strategia profittevole con un profilo di rischio eccellente (Max Drawdown < 1%).
- Insegnamento: Una regola di uscita disciplinata (come il
time exit) è il modo più efficace per trasformare l’edge direzionale di TimesFM in un risultato controllato.
Lezione 2: Le Bande di Confidenza Sono Segnali di “Stress” del Mercato
MeanReversionStrategy: Usavaclose < lower_bandper entrare.- Risultato: Frequenza di trading molto bassa.
- Insegnamento: Le bande di confidenza del modello sono ben calibrate. Un superamento del prezzo è un evento raro che segnala condizioni di mercato estreme, un segnale potenzialmente di alta qualità.
4. Spunti per Nuove Strategie (Direzioni di Ricerca)
Per aiutarti a iniziare, di seguito trovi diverse direzioni di ricerca che puoi esplorare. Sentiti libero di prendere una di queste idee e svilupparla, oppure usale come ispirazione per una tua creazione originale.
Idea A: Ottimizzare l’Orizzonte Temporale
- Domanda: Abbiamo usato un
hold_perioddi 5 giorni. È ottimale? - Esperimento: Create variazioni della
MomentumStrategyV2conhold_perioddiversi (es. 3, 7, 10, 15).
Idea B: Combinare Direzione e Bande di Confidenza
- Domanda: Possiamo migliorare il segnale di ingresso della strategia Momentum?
- Esperimento: Create una strategia che entri solo se
forecast_h5 > closeEcloseè vicino o sotto lalower_band.
Idea C: Sfruttare l’Ampiezza delle Bande (Incertezza del Modello)
- Domanda: L’ampiezza delle bande ci dice qualcosa sulla potenziale volatilità futura?
- Esperimento: Calcolate
band_width = forecast_upper_h10 - forecast_lower_h10e usatela come filtro (entrare solo conband_widthbassa) o come segnale di breakout (entrare solo conband_widthalta).
Idea D: Sviluppare Strategie Short
- Domanda: L’edge del modello è simmetrico? È bravo a prevedere i ribassi quanto i rialzi?
- Esperimento: Create la versione “short” della
MomentumStrategyV2(forecast_h5 < close).
5. Il Tuo Compito: Proporre e Sviluppare
Sulla base di questo framework, il tuo compito è quello di progettare e implementare una o più logiche di trading. Puoi scegliere uno dei due percorsi seguenti:
Percorso 1: Migliorare una Strategia Esistente
- Prendi una delle strategie che abbiamo sviluppato (es.
MomentumStrategyV2TimeExit) come base. - Introduci una modifica o un filtro che, secondo la tua ipotesi, ne migliorerà le performance (es. aumentare il Profit Factor, ridurre il drawdown).
- Crea un nuovo file per la tua versione (es.
MomentumStrategy_v3_TrendFilter.py).
Percorso 2: Creare una Nuova Strategia
- Prendi spunto da una delle “Idee di Ricerca” (o da una tua idea originale).
- Scrivi da zero una nuova classe di strategia che implementi la tua logica.
- Dai alla strategia un nome descrittivo (es.
BandBreakoutStrategy_v1.py).
Output Atteso per ogni Strategia Proposta:
- Il file
.pycontenente il codice della strategia, completo di docstring che ne spieghino la logica. - Il
trade loge le metriche di performance finali ottenute da un backtest su un ticker a tua scelta (es. AAPL, su un periodo di test significativo). - Un breve commento che spieghi perché hai fatto determinate scelte e come i risultati si confrontano con i nostri prototipi.
6. Linee Guida per la Sperimentazione
- Isola una Variabile alla Volta: Quando testi una nuova idea, modifica solo un parametro o una regola alla volta.
- Dai un Nome Chiaro alle Tue Strategie: Segui la convenzione
NomeStrategia_vX_DescrizioneModifica.py. - Analizza le Metriche Chiave: Non guardare solo al profitto. Il Max Drawdown, il Profit Factor e il Rapporto Vincita/Perdita Media sono fondamentali.
Buona ricerca!