Table of Contents
Intuizione.
Durante la stesura della mia tesi, ho avuto uno dei miei momenti “ma, e se…?” riguardo una delle verità monumentali del mondo degli investimenti: l’indice S&P500 è visto principalmente come investimento “sicuro” o, per chi ha meno avversione al rischio, come copertura contro i ribassi di singoli titoli.
E se ci fosse un modo per coprire L’INDICE stesso, e non CON l’indice?
Beh, si scopre che combinando il VIX, una strategia con le opzioni ed un semplice buy and hold sull’indice SP, si può fare.
Matematica Noiosa.
Definiamo una notazione semplice:
- Sia
P
la chiusura dell’SPX (con pedice t, al tempo t). - Sia
EMAₗ(t)
la media mobile esponenziale diP
al tempo t su 50 e 200 giorni. - Sia
CUₜ
la funzione indicatrice del crossover, conCUₜ = 1
se e solo seEMA_50(t) > EMA_200(t)
ePₜ > EMA_50(t)
. - Sia
TSₜ
l’indicatore di attivazione del trailing stop al tempo t. - Sia
Mₜ
l’insieme degli stati che la strategia può assumere. - Sia
Vₜ
il valore del portafoglio al tempo t.
Inizializzazione
per ogni t > 1.
Intuizione in Italiano Semplice.
L’indice S&P500 è il benchmark più utilizzato nel mondo azionario, ma come ogni singolo titolo che lo compone, anch’esso subisce crolli, sentiment, bull run, pressioni ribassiste. Per minimizzare questo aspetto, ho pensato di implementare una di tipo Straddle.
Il modo più semplice per spiegare come funziona uno straddle è dire: “con abbastanza volatilità, guadagni indipendentemente da dove va il mercato.”
In pratica, una straddle consiste nel comprare – o vendere – simultaneamente una call e una put sullo stesso sottostante (in questo caso, SPX), con lo stesso strike (at-the-money) e la stessa scadenza. In questo modo si punta a trarre profitto dal movimento, non dalla direzione del sottostante. Un esempio classico? I catalizzatori di mercato: dazi di Trump, COVID, crollo del 2008.
L’obiettivo è massimizzare il profitto relativo minimizzando il drawdown reale.
Il Processo.
I Dati.
Per questo progetto ho utilizzato:
- Dati SPX dal 1 Gennaio 2000, OHLC.
- Dati VIX dal 1 Gennaio 2000, OHLC.
- US 10Y Treasury Bond dal 1 Gennaio 2000, OHLC.
All of them are daily.
Tutti giornalieri.
Ora ti starai chiedendo: “E le opzioni? Dove hai preso l’options chain?” Ottima domanda. Ci arriviamo subito.




Ora che abbiamo i dati, posso mostrarti come ho superato l’ostacolo dell’option chain.
L’Option Chain.
L’option chain è semplicemente la lista di opzioni disponibili su un certo ottostante. Normalmente, per una certa scadenza, è composta da due sezioni (dette “legs”) Call e Put, strutturate così:
- Open Interest
- Volume
- Bid Size
- Bid
- Ask
- Ask Size
- Strike
Sfortunatamente, i dati delle chain sono limitati, inesistenti, o costano anche 20.000$ l’anno (no grazie). Il pacchetto yfinance
purtroppo non fornisce più queste info.
Come li ho ottenuti? Con le opzioni sintetiche.
Un’opzione sintetica è un’opzione il cui prezzo è stato calcolato. E come studente di Computational Finance ho pensato che il pricing di derivati potesse essere nelle mie corde. 🙂
class OptionsSynthesizer:
Usiamo i dati da:
- US10Y (risk-free rate)
- Indice VIX (volatilità implicita)
- SPX (sottostante)

E sì, se hai un minimo di background, hai già capito: sto prezzando le opzioni con la formula di Black-Scholes-Merton. Non è la più accurata in assoluto, ma per testare una teoria va benissimo. Se il delta tra prezzo sintetico e reale è < 2%, sono soddisfatto.
Let’s have a look at the computation process:
- S: il prezzo spot, riga per riga.
- K: prezzo strike, creato con
np.linspace()
attorno a S, ±10%, 10 strike totali. - Sigma, Vega, sono greche calcolate tramite la funzione synthetic iv:

dove sigma definisce la volatilità e vega la sensibilità del prezzo dell’opzione rispetto alla volatilità.
- Call, Put prezzate attraverso BS:

- Bid/Ask: aggiunta simulazione spread (noise ~N(0, 0.002 * Prezzo Opzione * exp(-Maturità)))

- Calcolo di ulteriori greche (avevo preventivato l’uso anche di esse).

Sì, ho controllato il rapporto Put-Call Parity per ogni riga generata.
Risultato? Una chain sintetica esplorabile e realistica. Smile e superficie ci sono (un po’ grossolana, ma funziona).
I Segnali.
Come anticipato, il trigger della strategia è legato al VIX e alle sue relazioni con il passato:
- Se il prezzo di chiusura è sopra la EMA50 e la EMA50 è sopra la EMA200 → segnale = 1. Altrimenti, -1.


La Strategia Completa
Utilizzando un adattamento del mio backtester, il test viene eseguito giorno per giorno con operazioni vettorializzate per efficienza e velocità. La chain sintetica viene generata solo al momento del trigger. Se la strategia non è attiva, si entra in modalità buy & hold, per non lasciare soldi sul tavolo e coprirsi da eventuali perdite della strategia opzionale.
I Risultati.
Equity Curve.

Come possiamo chiaramente vedere, l’obiettivo dello studio è stato raggiunto, e l’ipotesi confermata: l’indice S&P500 può essere coperto utilizzando le sue opzioni, intercettando segnali dal VIX, a un prezzo relativamente contenuto (commissioni e fee strutturali prese da IBKR, il broker che uso personalmente)
Ma quali sono i numeri della strategia?
CAGR : 4.05%
Annual Vol : 5.77%
Max Drawdown : -8.86%
Total Return : 173.29%
SPX Performance Metrics:
CAGR : 5.50%
Annual Vol : 19.52%
Max Drawdown : -56.78%
Total Return : 288.94%
Com’è possibile dedurre dai risultati, la performance della strategia è inferiore rispetto a quella dell’indice, ma osservando CAGR, Volatilità Annua ed i rapporti, non sono molto distanti, regalando un outlook stabile sull’andamento della strategia. Il valore che più mi impressiona (e l’effettivo raggiungimento del mio scopo) riguarda il drawdown. Ridurre percentuali di drawdown significa regalare tranquillità e stabilità anche nei peggiori momenti di panico.

Un drawdown sotto il 10% senza diversificazione, su un singolo asset performando più del 170%?
Direi che è una bella vittoria, no?
Lascia un commento