La programmazione dinamica spiegata
La programmazione dinamica è il motore matematico alla base del tuo percorso finanziario ottimale. Scopri come questa potenza matematica semplifica il tuo cammino verso il raggiungimento di ogni obiettivo.
Programmazione dinamica – il gold standard per i tuoi obiettivi finanziari
A prima vista, la programmazione dinamica (PD) potrebbe sembrare un termine informatico che ha poco a che fare con la finanza o gli investimenti. Ma in realtà, è un framework molto potente per prendere decisioni sequenziali ottimali in condizioni di incertezza. Che tu stia navigando su una scacchiera, gestendo una catena di approvvigionamento o facendo crescere un portafoglio nel tempo, la PD offre un modo sistematico per scomporre problemi complessi in parti gestibili.
In questo articolo ti spiegheremo la PD in parole semplici usando un gioco basato su una griglia, esamineremo un esempio concreto con un grafico e ti mostreremo come la stessa logica guidi l'approccio di GBI all'asset allocation.
Programmazione dinamica – Cos'è?
In parole molto semplici, la programmazione dinamica è un metodo per risolvere problemi complessi scomponendoli in sotto-problemi più piccoli, risolvendo ciascuno di essi una sola volta e riutilizzando quelle soluzioni per costruire la risposta finale. È sia un framework matematico per l'ottimizzazione sia un corrispondente approccio algoritmico.
I due aspetti (la teoria matematica e la parte algoritmica) sono strettamente collegati. Per alcuni tipi di problemi, possiamo garantire che esista una strategia ottimale e che la programmazione dinamica sia in grado di trovarla in modo efficiente.
Il principio dell'induzione a ritroso
L'idea chiave alla base della programmazione dinamica è risolvere i problemi a ritroso. Partendo dalla fase finale, determiniamo la decisione migliore per un risultato desiderato, per poi spostarci passo dopo passo verso il presente, identificando la decisione migliore in ogni momento. Questo elimina la necessità di indovinare il futuro – al contrario, lasciamo che sia il futuro a dirci cosa dovrebbe fare il presente.
L'esempio più comune (il gioco della griglia)
Facciamo un gioco.
Immagina di trovarti su una griglia bidimensionale (come una scacchiera), partendo dalla colonna più a sinistra in una qualsiasi delle celle e spostandoti da sinistra a destra.

In ogni momento puoi scegliere un'azione da un insieme di opzioni predefinite. In base alla tua decisione, ti sposti di una colonna verso destra, atterrando in una delle celle di quella colonna con determinate probabilità. Alcune azioni/decisioni avranno più probabilità di portarti in una cella specifica rispetto a un'altra.

Continui questo processo fino a raggiungere la colonna più a destra. La tua posizione finale ti assegna un punteggio. Come dovresti agire in ogni momento per massimizzare il tuo punteggio finale? Esiste una strategia ottimale?

Ed è esattamente qui che entra in gioco la programmazione dinamica.
Vediamo come funzionerebbe l'algoritmo.
Inizia dall'ultima colonna (colonna 8). Nota che ogni cella ha un punteggio finale noto (nel nostro esempio ipotizziamo che la parte superiore rappresenti il punteggio più alto).
► Torna alla colonna 7. Per ogni cella (ad es. D7) e per ogni azione possibile, calcola un punteggio atteso come somma del punteggio finale della cella successiva moltiplicato per la probabilità di atterrare lì. Scegli l'azione che massimizza questo valore atteso.

► Registra quel punteggio atteso massimo per ogni cella della colonna 7. Questo è il punteggio per il fatto di trovarsi in quella cella in quel momento, e l'azione che ci ha dato tale punteggio (in questo caso, quella 'difensiva'), è l'azione ottimale da quella cella in quel momento.
► Torna alla colonna 6 e fai lo stesso, ma questa volta utilizzando i punteggi della colonna 7.

► Ripeti il procedimento a ritroso fino alla prima colonna.

Il risultato è una decisione ottimale per ogni stato possibile in ogni momento.
Collegare la terminologia alla griglia
Per collegare questa intuizione al framework formale, possiamo introdurre una terminologia standard:
► Le celle della scacchiera sono chiamate stati (states)
► L'insieme delle decisioni possibili è chiamato insieme di controllo (control set)
► Le probabilità di spostarsi da una cella all'altra definiscono la legge di transizione (transition law)
► Il punteggio finale è chiamato funzione di ricompensa (reward function)
Sotto determinate ipotesi, possiamo dimostrare che una strategia ottimale esiste – e che può essere trovata utilizzando un algoritmo ricorsivo.
La programmazione dinamica e GBI
Ti ricordi la scacchiera?
Lo spostamento da sinistra a destra rappresenta il passare del tempo e le celle in ogni riga rappresentano il tuo livello di ricchezza in ciascun momento. Ad ogni passo, le azioni a tua disposizione corrispondono a diversi portafogli che puoi scegliere. Ogni portafoglio ti darà diverse possibilità di guadagnare più o meno nel periodo successivo.
Infine, la funzione di ricompensa può être la ricchezza finale stessa, o semplicemente un risultato binario (0 o 1) a seconda che tu abbia raggiunto o meno una determinata soglia.
Questo porta a una domanda molto concreta:
Quale portafoglio dovresti scegliere in ogni momento, data la tua ricchezza attuale, per massimizzare il tuo risultato finale?
Questo è esattamente il problema che GBI si propone di risolvere per te! La buona notizia è che questo problema può essere risolto usando la programmazione dinamica. Sotto le nostre ipotesi di modellazione, una strategia ottimale esiste – e il nostro framework è progettato per trovarla per te.
Per riassumere
La programmazione dinamica è molto più di un concetto accademico – è uno strumento pratico per prendere le migliori decisioni possibili nel tempo quando il futuro è incertain. Scomponendo un problema complesso e multi-periodale in passaggi più piccoli rivolti al passato, la PD garantisce una strategia ottimale senza la necessità di indovinare o affidarsi all'intuito.
Nel gioco della griglia, ciò significa sapere esattamente quale azione intraprendere da qualsiasi cella in qualsiasi momento. In finanza, significa sapere esattamente quale portafoglio scegliere data la tua ricchezza attuale, la tua tolleranza al rischio e il tuo orizzonte temporale di investimento.
GBI si basa esattamente su questa fondazione matematica, portando il rigore della programmazione dinamica nell'asset allocation del mondo reale.
Nel prossimo articolo esploreremo la struttura matematica alla base di questo approccio e vedremo come l'algoritmo funziona in pratica.
Vuoi vedere la programmazione dinamica in azione? Prova il nostro strumento e scopri quanto può essere potente la consulenza finanziaria quando è guidata da algoritmi di programmazione dinamica.