con: .\.venv\Scripts\Activate.ps1 attivato da: (.venv) PS D:\01_DevOps\fire\fireDev_rebuild>

python -m scripts.poc.poc_timesfm_backtester --ticker "SPY"

Transclude of backtest_forecast_vs_actuals

Transclude of backtest_error_over_time

Transclude of poc_timesfm_backtester.py

Contesto

Una singola previsione “one-shot” non è sufficiente per determinare l’affidabilità di un modello di forecasting. Per capire se un modello è veramente utile in un contesto finanziario, è necessario simulare come si sarebbe comportato in passato su un lungo periodo di tempo. Questo processo è noto come backtesting.

Questo POC è stato creato per rispondere a una domanda critica: “Come si comporterebbe il modello TimesFM 2.5 se lo usassimo continuativamente su dati storici?“. L’obiettivo era sviluppare un prototipo per un motore di backtesting robusto, in grado di misurare le prestazioni del modello non solo in un singolo punto, ma in modo dinamico attraverso diverse condizioni di mercato.

Decisione

È stato sviluppato uno script Python da riga di comando (poc_timesfm_backtester.py) che implementa una metodologia di backtesting avanzata conosciuta come “rolling-origin” (o “expanding window”).

Le caratteristiche chiave di questo POC sono:

  • Metodologia Rigorosa: Invece di un singolo split train/test, lo script itera sulla serie storica. Ad ogni passo, “espande” la finestra di dati di training con i dati reali del passo precedente e genera una nuova previsione, simulando un processo di previsione continuo.
  • Strumento da Riga di Comando (CLI): Lo script è stato costruito con argparse, rendendolo uno strumento flessibile e riutilizzabile che può essere configurato per testare diversi ticker, periodi di tempo e metriche di errore.
  • Integrazione con l’API di TimesFM 2.5: Implementa la nuova API del modello, che richiede la compilazione con una ForecastConfig specifica.
  • Analisi dell’Errore nel Tempo: Non si limita a calcolare un singolo valore di errore finale. Invece, calcola e memorizza l’errore (MAE o RMSE) ad ogni step del backtest, permettendo di analizzare se le prestazioni del modello degradano o migliorano nel tempo.
  • Reportistica Visiva Avanzata: Genera due report HTML interattivi distinti e di grande valore analitico:
    1. backtest_forecast_vs_actuals.html: Mostra la serie storica reale sovrapposta a tutti i segmenti di previsione generati, permettendo una valutazione visiva immediata.
    2. backtest_error_over_time.html: Visualizza l’andamento della metrica di errore nel tempo, cruciale per identificare periodi in cui il modello ha faticato (es. alta volatilità).

Conseguenze

Positive

  • Valutazione del Modello Molto Più Affidabile: Il backtest rolling-origin fornisce una stima molto più robusta e realistica delle prestazioni di un modello rispetto a un singolo test. L’analisi dell’errore (MAE) su SPY ha mostrato una notevole variabilità, indicando una forte dipendenza dalle condizioni di mercato.
  • Prototipo per un Core Feature di FIRE: Questo script non è solo un test, ma il progetto fondamentale per il motore di backtesting che verrà integrato nell’applicazione principale.
  • Insight su Vincoli Tecnici: L’esecuzione ha rivelato un vincolo architetturale di TimesFM: l’orizzonte di previsione (horizon) viene arrotondato a un multiplo di 128. Questa è un’informazione tecnica cruciale per l’implementazione finale.
  • Automazione e Riproducibilità: La natura dello script CLI permette di automatizzare facilmente i test su intere watchlist di ticker, rendendo il processo di validazione efficiente e scalabile.

Negative / Limitazioni

  • Costo Computazionale: Un backtest rolling-origin è computazionalmente intensivo. Eseguirlo su lunghe serie storiche o con step piccoli può richiedere molto tempo, anche su GPU.
  • Non è un Ottimizzatore: Lo script testa il modello con una configurazione fissa. Non esegue un’ottimizzazione degli iperparametri (es. la dimensione del contesto) per trovare la configurazione migliore.
  • Rischio di Overfitting sul Passato: Come per ogni backtest, ottimi risultati storici non sono una garanzia assoluta di successo futuro. Lo strumento aiuta a validare la coerenza di un modello, non a predire il futuro con certezza.