In questo articolo vediamo come simulare ed analizzare con DataInvestor una classica asset allocation tattica, il portafoglio con asset allocation 60/40. Questa asset allocation rappresenta una solida base per chi cerca un equilibrio tra rischio e rendimento nel proprio investimento. La strategia, semplice ma efficace, consente di diversificare il capitale tra diverse classi di asset, facilitando una gestione prudente e bilanciata.
Le strategie TAA rappresentano un’ottima scelta per chi muove i primi passi nel trading sistematico, desidera integrare il trading sistematico nel proprio piano di investimento o vuole ridurre al minimo il lavoro quotidiano nella gestione di una strategia.
Pur apparendo semplici come meccanismi di trading sistematico, le TAA costituiscono il cuore di alcune delle implementazioni più complesse. Molte, se non tutte, le strategie TAA si basano su una solida comprensione delle tendenze macroeconomiche e sulla conoscenza del comportamento a lungo termine delle diverse classi di asset. La frequenza tipica di ribilanciamento mensile permette di dedicare più tempo alla ricerca e meno alla gestione operativa.
In questo e nei prossimi articoli approfondiamo alcuni di questi temi. Forniamo una panoramica solida del TAA tramite alcune strategie di esempio, utili come “strumento” nella cassetta degli attrezzi di ogni trader sistematico e potenzialmente per diversificare il portafoglio rispetto a strategie a frequenza più elevata.
Oltre a scoprire nuove possibilità di investimento, testiamo queste strategie tramite implementazioni Python usando il nostro motore di backtesting open source DataInvestor. Questo framework modulare facilita l’uso e l’integrazione con funzionalità avanzate, consentendo di implementare agevolmente strategie TAA. Tutti gli approcci di asset allocation descritti negli articoli sono stati testati con backtest completi e grafici interattivi che ci aiutano a valutare se aggiungere la strategia al portafoglio.
Benchmark della strategia
Molte strategie TAA adottano semplici asset allocation statiche ribilanciate periodicamente. Alcune usano metodi sofisticati per costruire portafogli che pesano tatticamente le allocazioni con frequenza più alta.
Come in ogni investimento, valutiamo il costo opportunità di allocare capitale su una strategia o portafoglio rispetto ad altri. Se consideriamo di eseguire una strategia TAA complessa con pesi non banali, dobbiamo chiederci se possiamo ottenere risultati simili o migliori con semplici allocazioni statiche.
Per questo è importante comprendere il concetto di benchmark della strategia. Il benchmark consiste nella scelta di uno specifico portafoglio per fornire un confronto con un’altra strategia di trading. Pensiamo al benchmark come alla “scelta di default”. Se, per un dato profilo rischio/rendimento, non riusciamo a battere il benchmark con una strategia attiva complessa, allora perché dedicare tempo operativo alla sua implementazione?
Scegliere un benchmark non è sempre semplice. Consideriamo una strategia attiva long-only azionaria gestita da un grande fondo istituzionale. Il benchmark più comune è un indice geografico pesato per capitalizzazione, come l’S&P 500 per gli USA o l’FTSE MIB per l’Italia. Tuttavia, il benchmark può anche essere un indice che aggrega la performance di altri fondi azionari istituzionali di lungo termine. Questo confronto può risultare più sensato, dato che un investitore sceglie effettivamente tra più aziende piuttosto che investire direttamente in un indice di mercato.
In particolare, quando consideriamo strategie di asset allocation statiche e attive, l’investitore dispone di molte classi di asset e opzioni geografiche. Quindi ha meno senso usare un singolo strumento di asset class geograficamente limitato come un indice di mercato interno. Tale approccio non coglie il potere diversificante di più classi di attività e aree geografiche.
Uno dei benchmark più diffusi per le strategie TAA è l’allocazione statica 60/40 azioni/obbligazioni. In questo articolo descriviamo il portafoglio 60/40 e la sua implementazione in DataInvestor come “strategia di trading”. Cerchiamo di capire, sulla base del clima macroeconomico attuale, perché finora questa allocazione è stata interessante ma potrebbe non mantenere le stesse performance in futuro.
Il portafoglio con asset allocation 60/40?
Il tradizionale portafoglio con asset allocationg 60/40 prevede di allocare il 60% del capitale in azioni e il 40% in obbligazioni. Effettuiamo il ribilanciamento periodico (di solito mensile) per mantenere questa proporzione, adeguando le posizioni all’aumento o diminuzione di ciascuna classe di asset tra i ribilanciamenti.
Il 60/40 si implementa spesso come portafoglio nazionale, ad esempio con azioni esclusivamente statunitensi e un mix di Treasury e obbligazioni societarie statunitensi. Può anche essere globale, usando azioni mondiali (sviluppate e non) e obbligazioni globali (sovrane e societarie).
Il principale vantaggio risiede nella diversificazione data dalla parziale non correlazione tra azioni e obbligazioni. Ciò riduce i drawdown massimi rispetto a un portafoglio interamente azionario.
Gli ETF a basso costo consentono ai trader retail sistematici di implementare direttamente questa strategia (e varianti), anche con un semplice foglio di calcolo aggiornato mensilmente.
In questo articolo presentiamo il portafoglio 60/40 come benchmark di asset allocation, usato come metro di confronto per le altre strategie tattiche sistematiche che descriveremo in futuro.
I Vantaggi dello 60/40
Nonostante la semplicità di allocazione, il mix 60/40 offre diversi vantaggi:
- Diversificazione – La tesi di investimento si basa sulla parziale non correlazione tra azioni e obbligazioni. Inserendo obbligazioni otteniamo un utile effetto di diversificazione.
- Rischio/Rendimento – Il 60/40 mira a fornire rendimenti simili alle azioni ma con volatilità simile alle obbligazioni, aumentando il rendimento corretto per il rischio (Sharpe Ratio).
- Attuazione – La strategia è molto semplice da eseguire, richiedendo solo un riequilibrio mensile o annuale. Usa ETF liquidi facilmente accessibili, adatti ai trader retail sistematici che vogliono contenere i costi di negoziazione a lungo termine.
- Tassazione – Pur dipendendo dalla situazione fiscale dell’investitore, la scarsa frequenza di realizzo dei guadagni rende la strategia fiscalmente interessante.
I Svantaggi dello 60/40
Il portafoglio con asset allocation 60/40 presenta anche alcuni svantaggi significativi, che ne limitano l’uso a benchmark più che a strategia per la maggior parte degli asset manager sistematici:
- Geografia – Il portafoglio tradizionale 60/40 usa asset esclusivamente statunitensi, implementati qui tramite gli ETF SPY e AGG. Un’alternativa prevede ETF globali su azioni e obbligazioni.
- Drawdown – Dai backtest sottostanti emerge un drawdown massimo del 35% in 27 mesi durante la crisi finanziaria globale. Pur inferiore al calo di circa il 50% di un portafoglio 100% SPY nello stesso periodo, risulta comunque difficile da sopportare per molti investitori.
- Data d’inizio – La performance è molto sensibile alla data iniziale, dato il peso delle azioni e le loro valutazioni. Se le azioni risultano “costose” (basandoci sul PE) all’inizio, ciò può influenzare fortemente i rendimenti complessivi. Per approfondimenti si veda Meb Faber [2].
- Rischio – Sebbene solo il 60% del valore sia allocato in azioni, in base alla volatilità tale classe incorpora molto più rischio. In articoli futuri spieghiamo i concetti di pesatura della volatilità e parità di rischio per attenuare questo effetto.
- Performance futura – Nonostante i buoni risultati degli ultimi 30 anni, molti operatori prevedono performance inferiori in futuro ([2], [3], [5], [7]). La combinazione di rendimenti obbligazionari negativi e azioni costose produce aspettative di rendimento corretto per il rischio inferiori.
Per questi motivi, il portafoglio 60/40 è perfetto come benchmark semplice e trasparente per valutare nuove strategie tattiche sistematiche. Successivamente vedremo come estendere e migliorare il portafoglio, ad esempio con altri asset (immobili, materie prime, valute), tecniche di ribilanciamento diverse e approcci di ottimizzazione dinamica.
Regole della strategia
La logica di questa strategia prevede che alla chiusura dell’ultimo giorno di negoziazione del mese si calcola l’equity totale del portafoglio. Si verifica che il 60% del valore in dollari sia allocato all’ETF SPY e il 40% all’ETF AGG, effettuando eventuali operazioni di ribilanciamento se necessarie.
Strumenti utilizzati
- SPY – SPDR S&P500 ETF Trust, che replica l’indice S&P500 del mercato azionario statunitense a grande capitalizzazione. Gli ETF alternativi includono IVV e VOO.
- AGG – iShares Core US Aggregate Bond ETF, che replica un indice di obbligazioni investment grade statunitensi. Un ETF alternativo è BND.
Implementazione con DataInvestor
Il backtest del portafoglio con asset allocation 60/40 è stato effettuando con l’ultima versione di DataInvestor. Al fine di favorire la replica di questi test, elenchiamo i parametri usati:
- Dati – I dati storici OHLCV giornalieri di SPY e AGG scaricati da YahooFinance
- Data di inizio 1 – 30 settembre 2003
- Data di fine – 3 dicembre 2019
- Pesi target – SPY 60%, AGG 40%
- Riserva di cassa 2 – 1%
- Conto iniziale – $ 1 MM
- Costi di transazione – Nessuno modello
- Ribilanciamento – Una volta al mese nell’ultimo giorno di calendario, le operazioni sono eseguite alla successiva apertura del mercato disponibile, senza buffering
- Frequenza di aggiornamento – Le statistiche sono state raccolte quotidianamente alla fine della giornata di mercato
L’implementazione di questa strategia prevede la creazione di un script sixty_fourty.py
dove vengono inizializzate le classi dei moduli necessari ed eseguiti insieme in una sessione di backtest:
import os
import pandas as pd
import pytz
from datainvestor.alpha_model.fixed_signals import FixedSignalsAlphaModel
from datainvestor.asset.equity import Equity
from datainvestor.asset.universe.static import StaticUniverse
from datainvestor.data.backtest_data_handler import BacktestDataHandler
from datainvestor.data.daily_bar_csv import CSVDailyBarDataSource
from datainvestor.statistics.tearsheet import TearsheetStatistics
from datainvestor.trading.backtest import BacktestTradingSession
from datainvestor import settings
def run():
testing = False
config_file = settings.DEFAULT_CONFIG_FILENAME
config = settings.from_file(config_file, testing)
start_dt = pd.Timestamp('2003-09-30 14:30:00', tz=pytz.UTC)
end_dt = pd.Timestamp('2019-12-31 23:59:00', tz=pytz.UTC)
# Costruisce i simboli e gli asset necessari per il backtest
strategy_symbols = ['SPY', 'AGG']
strategy_assets = ['EQ:%s' % symbol for symbol in strategy_symbols]
strategy_universe = StaticUniverse(strategy_assets)
# Per evitare di caricare tutti i file CSV nella directory,
# impostare l'origine dati in modo che carichi solo i simboli forniti
csv_dir = config.CSV_DATA_DIR
data_source = CSVDailyBarDataSource(csv_dir, Equity, csv_symbols=strategy_symbols)
data_handler = BacktestDataHandler(strategy_universe, data_sources=[data_source])
# Costruisce un modello Alpha che fornisce semplicemente
# allocazioni statiche a un universo di asset
# In questo caso 60% SPY ETF, 40% AGG ETF,
# ribilanciato alla fine di ogni mese
strategy_alpha_model = FixedSignalsAlphaModel({'EQ:SPY': 0.6, 'EQ:AGG': 0.4})
strategy_backtest = BacktestTradingSession(
start_dt,
end_dt,
strategy_universe,
strategy_alpha_model,
rebalance='end_of_month',
long_only=True,
cash_buffer_percentage=0.01,
data_handler=data_handler
)
strategy_backtest.run()
# Costruisce gli asset di riferimento (buy & hold SPY)
benchmark_assets = ['EQ:SPY']
benchmark_universe = StaticUniverse(benchmark_assets)
# Costruisce un modello Alpha di riferimento che fornisce
# un'allocazione statica al 100% all'ETF SPY, senza ribilanciamento
benchmark_alpha_model = FixedSignalsAlphaModel({'EQ:SPY': 1.0})
benchmark_backtest = BacktestTradingSession(
start_dt,
end_dt,
benchmark_universe,
benchmark_alpha_model,
rebalance='buy_and_hold',
long_only=True,
cash_buffer_percentage=0.01,
data_handler=data_handler
)
benchmark_backtest.run()
# Output delle Performance
tearsheet = TearsheetStatistics(
strategy_equity=strategy_backtest.get_equity_curve(),
benchmark_equity=benchmark_backtest.get_equity_curve(),
title='60/40 US Equities/Bonds'
)
tearsheet.plot_results()
Risultati
Di seguito si riportano i risultati del backtest di un portafoglio con asset allocation 60/40 dal 30 settembre 2003 al 3 dicembre 2019:
Statistic | SPY | 60/40 | Statistic | SPY | 60/40 |
---|---|---|---|---|---|
CAGR | 9.19% | 7.25% | Volatilità Annualizzata | 17.39% | 10.19% |
Sharpe Ratio | 0.59 | 0.74 | Sortino Ratio | 0.71 | 0.889 |
Max Drawdown | -54.7% | -35.3% | Durata Max Drawdown | 42 mesi | 27 mesi |

Il portafoglio con asset allocation 60/40 ha prodotto un CAGR del 7,25% con una volatilità annualizzata del 10% e uno Sharpe Ratio rispettabile (il tasso giornaliero privo di rischio) di 0,74. Dalla curva di equity risulta chiaro che dopo la crisi finanziaria globale del 2008 il portafoglio 60/40 ha mostrato una buona performance, anche corretta per l’inflazione.
Tuttavia, abbiamo ottenuto questa performance principalmente grazie a una combinazione di fattori macroeconomici, come i programmi di quantitative easing della banca centrale e un contesto di bassa inflazione negli Stati Uniti. In questo periodo i titoli azionari statunitensi hanno registrato ottime performance.
Possiamo spiegare questo fenomeno con il fatto che, dato il calo dei rendimenti delle obbligazioni causato dalla riduzione dei tassi di interesse, gli investitori sono passati a una fase di “risk on” acquistando azioni e facendo aumentare artificialmente i prezzi. Purtroppo ci aspettiamo che i rendimenti azionari futuri diminuiranno nei prossimi 10 anni, in parte a causa delle loro valutazioni attualmente elevate. Inoltre, i rendimenti dei Treasury statunitensi a 10 anni sono costantemente scesi, passando da circa il 4% nel 2003 a meno del 2% nel 2019, esercitando ulteriore pressione sulle aspettative di performance future del 60/40.
Considerando che l’inflazione negli Stati Uniti si aggira attualmente intorno al 2-3%, prevediamo che il portafoglio con asset allocation 60/40 avrà probabilmente difficoltà a generare un rendimento reale positivo. Inoltre, non possiamo garantire che la bassa correlazione storica tra le due asset class (azioni e obbligazioni) persisterà. Se la correlazione aumenta (come sembra stia avvenendo), compromettiamo in primo luogo una delle tesi di investimento alla base del 60/40.
Conclusioni
Nonostante questi venti contrari, prevediamo che il portafoglio resterà per qualche tempo la scelta primaria di benchmark per le strategie basate su TAA, seppure con un’implementazione globale anziché con la tradizionale metodologia limitata agli Stati Uniti.
Negli articoli successivi descriviamo strategie TAA più complesse, che tentano di mitigare gli effetti della concentrazione geografica, della correlazione tra asset class e dei problemi di gestione del rischio sopra descritti, per migliorare i nostri rendimenti aggiustati per il rischio a lungo termine.
Riferimenti
- [1] Can a 60/40 split portfolio deliver better outcomes? – Schroders
- [2] Chapter 2: The Benchmark Portfolio 60/40 – Meb Faber
- [3] Why Morgan Stanley Says the 60/40 Portfolio Is Doomed – Investopedia
- [4] Destroying The 60/40 Portfolio Myth – Forbes
- [5] What a downbeat forecast for 60/40 portfolios means for alternatives- Portfolio Adviser
- [6] What Is the 60/40 Portfolio (And Should You Have One)? – SmartAsset
- [7] Asset Allocation: The 60/40 question – IPE
Note a piè di pagina
1. La durata del backtest è relativamente breve rispetto a molti altri effettuati nell’ambito dell’asset allocation. Ciò dipende dalla data di inizio dell’ETF AGG. Nel presente articolo scegliamo di non creare un “asset sintetico” per coprire la performance precedente alla data di avvio di AGG al fine di migliorare la trasparenza e favorire la riproducibilità.
2. Attualmente DataInvestor non simula il margine e quindi non consente ai nuovi acquisti di superare il saldo di cassa del conto corrente. Per tenere conto delle variazioni di prezzo tra il ribilanciamento alla chiusura e l’acquisto alla successiva apertura, manteniamo un piccolo buffer di cassa target nel conto. Abbiamo usato un valore dell’1% nel precedente backtest. Ciò significa che il restante 99% del capitale del conto viene allocato con un obiettivo del 60% SPY e del 40% AGG in ogni periodo di ribilanciamento.
Il codice completo presentato in questo articolo, basato sul framework di trading quantitativo event-driven DataInvestor, è disponibile nel seguente repository GitHub: https://github.com/tradingquant-it/DataInvestor.”