Prevedere il DAX con la Regressione Quadratica in Python: Guida Completa e Codice

Cerca:

Generic selectors
Exact matches only
Search in title
Search in content
Post Type Selectors
Grafico DAX Regressione Quadratica Python

Il Fascino e le Sfide della Previsione Finanziaria

Nel dinamico mondo dei mercati finanziari, la capacità di prevedere l’andamento futuro degli indici azionari come il DAX tedesco è un’ambizione che da sempre affascina investitori, analisti e data scientist. L’idea di decifrare i complessi pattern storici per anticipare le prossime mosse del mercato è potente, ma anche notoriamente ardua. Con l’avanzare del machine learning, emergono strumenti sempre più sofisticati per affrontare questa sfida.

In questo articolo, partiremo da un approccio intuitivo e didattico: la regressione quadratica. Esploreremo come un modello relativamente semplice possa essere utilizzato per analizzare l’andamento storico del DAX e tentare una previsione a breve termine. Attraverso un esempio pratico in Python, mostreremo l’implementazione di questo modello, dalla raccolta dei dati alla visualizzazione delle previsioni.

Tuttavia, come spesso accade nella scienza dei dati applicata a fenomeni complessi come i mercati, la semplicità ha i suoi limiti. Dopo aver esaminato i punti di forza tecnici di un modello di regressione quadratica, ci immergeremo in un’analisi critica delle sue profonde limitazioni quando applicato alla natura intrinsecamente non lineare, non stazionaria e “rumorosa” dei dati finanziari. Infine, per fornire una prospettiva completa e realistica, esploreremo modelli alternativi molto più adatti e robusti per la previsione delle serie temporali finanziarie, come i modelli ARIMA/Prophet e le reti neurali LSTM, discutendone i rispettivi vantaggi e svantaggi. Il nostro obiettivo è offrire una guida chiara non solo su come si può tentare una previsione, ma anche su cosa sia necessario considerare per farlo in modo efficace e consapevole.


Analizziamo un modello completo in Python che utilizza la regressione quadratica per analizzare l’andamento storico del DAX tedesco e prevedere i prossimi 5 giorni. Il codice include:

  • Download dei dati storici (via yfinance).

  • Preprocessing e fitting di un modello di regressione polinomiale (grado 2).

  • Visualizzazione con matplotlib e seaborn.

  • Predizione per i prossimi 5 giorni lavorativi.

import numpy as np
import pandas as pd
import yfinance as yf
from sklearn.preprocessing import PolynomialFeatures
from sklearn.linear_model import LinearRegression
from sklearn.metrics import mean_squared_error
import matplotlib.pyplot as plt
import seaborn as sns
from datetime import datetime, timedelta

# Configurazione stile grafici
sns.set(style="whitegrid")
plt.figure(figsize=(14, 7))

# 1. Download dati storici del DAX (ultimi 6 mesi)
dax = yf.download("^GDAXI", period="6mo", interval="1d")
dax.reset_index(inplace=True)

# 2. Preprocessing: Creazione feature numerica (giorni passati)
dax['Days'] = (dax['Date'] - dax['Date'].min()).dt.days

# 3. Regressione Quadratica (grado 2)
X = dax['Days'].values.reshape(-1, 1)
y = dax['Close'].values

# Trasformazione polinomiale
poly = PolynomialFeatures(degree=2)
X_poly = poly.fit_transform(X)

# Addestramento modello
model = LinearRegression()
model.fit(X_poly, y)

# Predizioni storiche (per grafico)
y_pred = model.predict(X_poly)

# 4. Predizione per i prossimi 5 giorni lavorativi
last_date = dax['Date'].iloc[-1]
future_days = [last_date + timedelta(days=i) for i in range(1, 6)]
future_days_numeric = np.array([dax['Days'].max() + i for i in range(1, 6)]).reshape(-1, 1)
future_X_poly = poly.transform(future_days_numeric)
future_y_pred = model.predict(future_X_poly)

# 5. Visualizzazione
plt.plot(dax['Date'], y, label='Prezzo Reale DAX', color='blue', linewidth=2)
plt.plot(dax['Date'], y_pred, label='Regressione Quadratica', color='red', linestyle='--')
plt.scatter(future_days, future_y_pred, label='Predizioni 5 giorni', color='green', s=100, marker='o')

# Formattazione grafico
plt.title('Andamento DAX e Regressione Quadratica', fontsize=16)
plt.xlabel('Data', fontsize=12)
plt.ylabel('Prezzo (€)', fontsize=12)
plt.legend()
plt.xticks(rotation=45)
plt.tight_layout()

# Aggiunta valori predetti alla tabella
future_df = pd.DataFrame({
    'Data': future_days,
    'Prezzo Predetto (€)': future_y_pred.round(2)
})
print("\nPredizioni per i prossimi 5 giorni:")
print(future_df.to_string(index=False))

plt.show()
[*********************100%***********************]  1 of 1 completed
Predizioni per i prossimi 5 giorni:
      Data  Prezzo Predetto (€)
2025-06-14             23820.51
2025-06-15             23835.58
2025-06-16             23850.60
2025-06-17             23865.56
2025-06-18             23880.46

Andamento DAX e Regressione Quadratica

Spiegazione del Codice

 

  1. Download Dati Storici:

    • Usiamo yfinance per scaricare i prezzi di chiusura (Close) del DAX (simbolo ^GDAXI) degli ultimi 6 mesi.

  2. Preprocessing:

    • Creiamo una feature Days che rappresenta i giorni passati dalla prima data nel dataset (necessaria per la regressione).

  3. Regressione Quadratica:

    • Trasformiamo i dati in una forma polinomiale di grado 2 con PolynomialFeatures.

    • Addestriamo un modello LinearRegression sui dati trasformati.

  4. Predizione Futura:

    • Generiamo le date dei prossimi 5 giorni lavorativi e li convertiamo in valori numerici (Days).

    • Usiamo il modello addestrato per prevedere i prezzi.

  5. Visualizzazione:

    • Grafico a linee con:

      • Andamento reale del DAX (blu).

      • Curva di regressione quadratica (rossa tratteggiata).

      • Punti verdi per le predizioni future.

    • Stampa a tabella delle predizioni.

Limitazioni e Miglioramenti Possibili

  • Dati Finanziari Non Lineari: La regressione quadratica è semplice ma potrebbe non catturare pattern complessi (es. volatilità improvvisa). Alternative:

    • Modelli ARIMA o Prophet per serie temporali.

    • Reti neurali (LSTM) per dati sequenziali.

  • Feature Aggiuntive: Includere indicatori tecnici (RSI, MACD) per migliorare le predizioni.

Regressione quadratica & Mercati finanziari

Il modello di regressione quadratica  è un ottimo punto di partenza per chi si avvicina all’analisi delle serie storiche con un approccio di machine learning, in particolare per illustrare come un modello polinomiale possa catturare tendenze non lineari. Tuttavia, è fondamentale comprenderne le implicazioni sia dal punto di vista tecnico che applicativo, specialmente nel contesto volatile e complesso dei mercati finanziari.

Punti di Forza Tecnici

  1. Semplicità e Accessibilità: La regressione quadratica, come forma di regressione polinomiale di secondo grado, è concettualmente e computazionalmente molto semplice. L’implementazione in Python con librerie come scikit-learn è diretta, rendendola accessibile anche a chi ha conoscenze limitate di statistica o machine learning. Questa semplicità si traduce in un modello facile da interpretare a livello di base: la curva parabolica indica una tendenza che accelera o decelera nel tempo. Per fini didattici o di prima esplorazione di un dataset, è uno strumento efficace.

  2. Cattura di Tendenze Non Lineari (di Secondo Grado): A differenza della regressione lineare semplice, che modella solo relazioni rettilinee, la regressione quadratica può modellare curve con una singola flessione. Questo significa che può rappresentare una fase di crescita accelerata seguita da un rallentamento (o viceversa), o una tendenza a forma di U o di U rovesciata. Nel contesto dei mercati finanziari, ciò può essere utile per visualizzare periodi di crescita o decrescita non costante, dove il tasso di cambiamento del prezzo non è uniforme. È un passo avanti rispetto alla rigidità della linearità, permettendo al modello di adattarsi meglio a determinati pattern di trend.

  3. Visualizzazione Chiara ed Efficace: La possibilità di visualizzare l’andamento reale del DAX insieme alla curva di regressione e ai punti di previsione futuri è un vantaggio significativo. Matplotlib e Seaborn consentono di creare grafici intuitivi che rendono immediatamente comprensibile come il modello si adatta ai dati storici e dove proietta le sue previsioni. Questa chiarezza visiva è cruciale per comunicare i risultati dell’analisi e per una rapida ispezione della plausibilità delle previsioni. Per un articolo o una presentazione, un grafico ben fatto può spiegare più di mille parole.

Forse potrebbe interessarti anche:  Riduzione della Dimensionalità con Python: 4 Esercizi Pratici su PCA, t-SNE e UMAP

Limitazioni e Considerazioni Applicative

Nonostante i suoi punti di forza, la regressione quadratica presenta gravi limitazioni quando applicata alle previsioni finanziarie, rendendola inadeguata per applicazioni di trading o investimento reali.

  1. Natura Complessa e Non Stazionaria dei Dati Finanziari:

    • Complessità e Non Linearità Reale: I mercati finanziari sono sistemi caotici e altamente non lineari, influenzati da innumerevoli variabili (economiche, politiche, psicologiche, eventi imprevisti). Una singola curva parabolica è una semplificazione eccessiva che non può catturare la vera complessità delle dinamiche dei prezzi. Le relazioni tra prezzo e tempo sono raramente descrivibili con una funzione polinomiale fissa su lunghi periodi.
    • Non Stazionarietà: Un presupposto fondamentale di molti modelli statistici (inclusa la regressione lineare/polinomiale) è la stazionarità dei dati, ovvero che le proprietà statistiche della serie (media, varianza, autocorrelazione) non cambino nel tempo. I prezzi azionari sono notoriamente non stazionari: le tendenze cambiano, la volatilità aumenta e diminuisce, e la media dei prezzi si sposta continuamente. Applicare un modello stazionario a dati non stazionari porta a previsioni inaffidabili. La regressione quadratica tenta di modellare una tendenza, ma non affronta la non stazionarietà sottostante o i cambiamenti strutturali.
    • “Rumore” e Volatilità: I mercati sono pieni di “rumore”, ossia fluttuazioni casuali che non seguono un pattern prevedibile. La regressione quadratica cerca di trovare un pattern liscio, ma questo “livellamento” può ignorare o sovrastimare i movimenti significativi causati dalla volatilità improvvisa o da eventi “cigno nero” (eventi rari e imprevedibili con impatti estremi).
  2. Problema di Overshooting/Undershooting e Extrapolation (Estrapolazione):

    • I modelli polinomiali sono intrinsecamente pericolosi per l’estrapolazione. Anche una regressione quadratica (grado 2) che si adatta bene ai dati storici può produrre previsioni completamente irrealistiche fuori dall’intervallo dei dati di training. Una parabola, per sua natura, dopo un certo punto, tende a crescere o decrescere all’infinito o con una velocità crescente.
    • Nel caso del DAX, se la curva di regressione ha una leggera pendenza positiva, le previsioni future continueranno a salire indefinitamente, anche se il mercato ha cicli di crescita e contrazione. Al contrario, una pendenza negativa porterebbe a previsioni di prezzi che scendono indefinitamente, il che è ugualmente irrealistico. Le previsioni per soli 5 giorni possono sembrare ragionevoli visivamente, ma il comportamento a lungo termine della funzione polinomiale la rende inadatta a catturare i cicli di mercato.
  3. Assenza di Autocorrelazione e Dipendenze Temporali:

    • Il problema più significativo della regressione polinomiale nel contesto delle serie temporali è che non tiene conto dell’autocorrelazione. Nelle serie finanziarie, il prezzo di oggi non è indipendente dal prezzo di ieri o dalla media dei prezzi della settimana scorsa. C’è una forte dipendenza sequenziale.
    • La regressione polinomiale tratta ogni punto dati come indipendente, dove il valore y dipende solo dalla variabile x (il tempo, in questo caso). Non incorpora il concetto che il valore di chiusura di un giorno dipende dal valore di chiusura del giorno precedente, né dagli errori di previsione passati. Questo la rende incapace di catturare la dinamica intrinseca delle serie temporali finanziarie, che è fondamentale per previsioni affidabili.
  4. Mancanza di Fattori Esplicativi (Fattori Esterni/Indicatori):

    • Il modello utilizza solo il tempo come feature. Tuttavia, i prezzi di borsa sono influenzati da una miriade di fattori esterni: eventi macroeconomici (tassi d’interesse, inflazione, PIL), notizie aziendali (trimestrali, fusioni e acquisizioni), eventi geopolitici (guerre, elezioni), sentimento del mercato, e indicatori tecnici (RSI, MACD, medie mobili, volumi).
    • Ignorare queste variabili cruciali significa che il modello è cieco alle forze che realmente guidano il mercato. La regressione quadratica può identificare una tendenza generale esistente, ma non può spiegare o prevedere i punti di svolta o i cambiamenti bruschi causati da questi fattori esterni. Per esempio, un annuncio inatteso della Banca Centrale Europea sul tasso di interesse avrebbe un impatto immediato sul DAX, che un modello basato solo sul tempo non potrebbe prevedere.
Forse potrebbe interessarti anche:  Intelligenza Emotiva AI: GPT-4 Supera l'Uomo. Realtà, Illusione o Funzione?

In sintesi, mentre la regressione quadratica è un eccellente strumento didattico per illustrare l’adattamento di curve non lineari, la sua applicazione per la previsione dei mercati finanziari è fortemente limitata e potenzialmente fuorviante. Per previsioni significative, è essenziale adottare modelli più sofisticati che considerino la natura non stazionaria, l’autocorrelazione e l’influenza di molteplici fattori esterni.

Modelli alternativi più specifici: Un’Analisi Approfondita

La regressione quadratica, come discusso, offre una visione semplificata delle tendenze ma è intrinsecamente inadatta per previsioni robuste nei mercati finanziari a causa della loro complessità, non stazionarietà e natura stocastica. Per superare queste limitazioni, è necessario rivolgersi a modelli specificamente progettati per le serie temporali.

1. Modelli ARIMA (AutoRegressive Integrated Moving Average) o Prophet

Questi modelli rappresentano un salto di qualità significativo rispetto alla regressione polinomiale per l’analisi delle serie temporali.

1.1 Modelli ARIMA (ARIMA, SARIMA, ARIMAX)

  • Approfondimento sui “Pro”:

    • Specificità per Serie Temporali: L’acronimo ARIMA racchiude la sua essenza:
      • AR (AutoRegressive): Modella la dipendenza tra un’osservazione e un certo numero di osservazioni ritardate (lagged observations). In altre parole, il valore attuale della serie dipende linearmente dai suoi valori passati. Questo è cruciale per catturare l’inerzia o la persistenza dei prezzi di borsa.
      • I (Integrated): Questo componente si riferisce alla differenziazione dei dati grezzi per renderli stazionari. La differenziazione rimuove le tendenze (mean-reverting trends) e le stagionalità, consentendo al modello di lavorare su una serie con proprietà statistiche più stabili. Questo è fondamentale per i dati finanziari, che sono quasi sempre non stazionari.
      • MA (Moving Average): Modella la dipendenza tra un’osservazione e un errore residuo ritardato da un modello di media mobile. Cattura gli “shock” o il “rumore” che si propagano nel tempo.
    • Estensioni Avanzate: Esistono estensioni come SARIMA (Seasonal ARIMA) per gestire stagionalità complesse (es. effetti di fine mese, fine trimestre), e ARIMAX che consente di incorporare variabili esogene (ad esempio, indicatori economici, tassi di interesse) nel modello, migliorando la sua capacità predittiva.
    • Base Statistica Robusta: ARIMA si basa su principi statistici consolidati, permettendo di interpretare i parametri del modello e di valutare la significatività dei termini AR, I, e MA.
  • Approfondimento sui “Contro”:

    • Complessità dei Parametri: Identificare i parametri ottimali (p, d, q per ARIMA, e ulteriori per SARIMA) richiede un’analisi esplorativa dei dati (ACF, PACF plots) e test di stazionarità (es. test di Dickey-Fuller aumentato). Questo processo può essere iterativo e richiede una certa comprensione dei concetti statistici.
    • Sensibilità alla Stazionarità: Se la serie non è adeguatamente differenziata o presenta cambiamenti strutturali improvvisi, le performance di ARIMA possono deteriorarsi.
    • Assunzione di Linearità: Sebbene più sofisticato della regressione polinomiale, ARIMA assume relazioni lineari tra i valori passati e attuali. Non è intrinsecamente adatto a catturare pattern non lineari complessi o relazioni dinamiche che possono emergere in contesti finanziari.

1.2 Modello Prophet (sviluppato da Facebook)

  • Approfondimento sui “Pro”:

    • Design User-Friendly: Prophet è progettato per la praticità e la scalabilità, con un’API intuitiva che richiede input minimi. È ottimo per data scientist e sviluppatori che non sono specialisti di serie temporali.
    • Componenti Modulari: Decompone la serie temporale in componenti: tendenza (modello di crescita segmentato), stagionalità (settimanale, annuale, giornaliera con trasformate di Fourier), e festività/eventi speciali. Questo approccio modulare permette di modellare facilmente fenomeni complessi come le vacanze di borsa o gli orari di trading ridotti.
    • Robustezza a Dati Mancanti e Outlier: Prophet è meno sensibile a valori anomali e dati mancanti rispetto ai modelli ARIMA, il che è un vantaggio notevole nei dati finanziari reali, spesso “sporchi”.
    • Gestione Automatica dei Cambiamenti di Tendenza: Prophet è in grado di identificare automaticamente i punti di cambiamento nel trend (changepoints), il che lo rende adattabile a serie temporali che mostrano bruschi cambiamenti nel comportamento (es. inizio di una recessione, bolle speculative).
  • Approfondimento sui “Contro”:

    • Approccio “Black-Box”: Sebbene sia flessibile, la sua natura di “black-box” può rendere difficile capire esattamente come il modello arriva alle sue previsioni o diagnosticare problemi specifici.
    • Meno Adatto a Previsioni a Brevissimo Termine/Alta Frequenza: Mentre eccelle nelle previsioni a medio-lungo termine con stagionalità, potrebbe essere meno performante di ARIMA per previsioni a brevissimo termine (es. tick-by-tick) dove la microstruttura del mercato è dominante.
Forse potrebbe interessarti anche:  Context Engineering: L'Altra Faccia dell'IA – Criticità, Costi e Bias Nascosti

2. Reti Neurali (LSTM – Long Short-Term Memory)

Le LSTM sono una sottoclasse delle Reti Neurali Ricorrenti (RNN) che eccellono nell’elaborazione di sequenze di dati e nel mantenere una “memoria” delle informazioni passate, rendendole particolarmente adatte per le serie temporali.

  • Approfondimento sui “Pro”:

    • Apprendimento di Dipendenze Complesse e Non Lineari: A differenza di ARIMA che assume linearità, le LSTM possono apprendere relazioni estremamente complesse e non lineari tra i valori passati e futuri. Sono in grado di identificare pattern che gli approcci statistici tradizionali potrebbero non rilevare.
    • Memoria a Lungo Termine: Il meccanismo delle “porte” (input, forget, output gates) nelle LSTM consente loro di selezionare quali informazioni mantenere o dimenticare dalla sequenza passata. Questo le rende efficaci nel catturare dipendenze a lungo termine, che sono critiche per la previsione di serie temporali finanziarie con influenze che si estendono su periodi lunghi.
    • Gestione di Input Multipli (Multivariate): Le LSTM possono facilmente incorporare più feature (indicatori tecnici, dati macroeconomici, volume) come input, consentendo un modello di previsione più ricco e olistico.
  • Approfondimento sui “Contro”:

    • Requisiti di Dati: Le LSTM, come tutte le reti neurali profonde, richiedono grandi quantità di dati storici per addestrarsi efficacemente e generalizzare bene. Per dataset piccoli o molto volatili, possono facilmente andare in overfitting.
    • Complessità e Risorse Computazionali: Sono computazionalmente molto più intensive da addestrare rispetto ad ARIMA o Prophet, spesso richiedendo GPU. La progettazione dell’architettura (numero di strati, neuroni, iperparametri) è un’arte e richiede esperienza.
    • “Black-Box” e Interpretazione: Le reti neurali sono modelli intrinsecamente “black-box”. È estremamente difficile interpretare come una LSTM arrivi a una particolare previsione, il che può essere un problema in contesti dove la trasparenza o la spiegabilità del modello sono importanti.
    • Sovra-adattamento (Overfitting): Senza un’adeguata regolarizzazione e un set di dati sufficientemente ampio, le LSTM possono facilmente “memorizzare” i dati di training invece di apprendere i pattern sottostanti, portando a performance scarse su dati unseen.

Quale Opzione è la Più Indicata?

La scelta del modello più indicato dipende da diversi fattori, tra cui la complessità del problema, la quantità e qualità dei dati disponibili, e il livello di competenza dell’analista.

  1. Per Iniziare e per la Maggior Parte degli Scenari di Previsione a Breve/Medio Termine:

    • Modelli ARIMA o Prophet sono l’opzione più indicata.

    • Prophet è eccellente per chi cerca una soluzione pratica, robusta e di facile utilizzo per previsioni finanziarie che includono tendenze e stagionalità, senza la necessità di una profonda conoscenza statistica delle serie temporali. È particolarmente adatto per la previsione su orizzonti di giorni o settimane.

    • ARIMA (o SARIMA) è preferibile per chi ha una maggiore comprensione della statistica delle serie temporali e desidera un controllo più granulare sul processo di modellazione, in particolare per catturare specifici pattern di autocorrelazione e stazionarità.

    • Motivazione Approfondita: Questi modelli sono stati specificamente sviluppati per affrontare le sfide delle serie temporali, come la non stazionarietà e l’autocorrelazione, che sono assunzioni violate dalla regressione quadratica. Offrono una base statistica più solida per le previsioni sui mercati finanziari, rendendo le previsioni più affidabili e realistiche rispetto a un modello di regressione generico. La loro capacità di catturare la dipendenza temporale è cruciale per la natura sequenziale dei prezzi finanziari.

  2. Per Problemi Avanzati, Dati Voluminosi e Ricerca di Pattern Complessi:

    • Reti Neurali (LSTM) sono un’opzione potente, ma con riserve.
    • Motivazione Approfondita: Se si dispone di grandi quantità di dati di alta qualità (anche dati ad alta frequenza) e si è disposti a investire tempo e risorse computazionali, le LSTM possono potenzialmente superare ARIMA/Prophet nella capacità di apprendere relazioni non lineari e molto complesse. Sono la scelta privilegiata per problemi di trading algoritmico avanzati o per modelli che incorporano un’ampia gamma di feature diverse. Tuttavia, la loro natura “black-box” e la sensibilità all’overfitting le rendono più rischiose senza un’adeguata esperienza e validazione.

In Conclusione:

Mentre la regressione quadratica può servire come ottimo strumento didattico e per una prima esplorazione visiva delle tendenze, è fondamentale non utilizzarla per decisioni di investimento reali. Per previsioni più significative e affidabili sui mercati finanziari, i modelli ARIMA o Prophet rappresentano il punto di partenza più logico e robusto. Le LSTM sono l’opzione di punta per scenari più complessi e con risorse abbondanti, ma richiedono un impegno e una competenza superiori. La scelta dipende sempre dal compromesso tra accuratezza desiderata, risorse disponibili e complessità del problema da affrontare.

 

Pubblicità