-
10-03-14, 15:30 #1
- Data Registrazione
- Dec 2011
- Messaggi
- 571
Superfici di volatilita' a supporto di decisioni operative
Ciao a tutti,
in questo thread in questi giorni si e’ discusso di come utilizzare le superfici di volatilita’ implicita (IV) a fini operativi.
Nel suo recente video Tiziano ha mostrato una serie di indicatori che permettono di catturare movimenti sulle IV prezzate dal mercato e di generare segnali operativi. Aspettando il rilascio ufficiale di tali indicatori in una futura release di Fiuto, apro questo thread per vedere se si riesce a costruire qualcosa che possiamo utilizzare nel frattempo in modo da prendere familiarita’ con la logica seguita.
Il tutto si basa sul seguente assunto: in ogni istante le opzioni vengono prezzate in modo tale da incorporare tutte le aspettative che i market maker hanno circa il prezzo del sottostante negli istanti successivi.
Il set informativo dei market maker si suppone sia ben piu’ completo rispetto a quello pubblico e questa maggiore disponibilita’ di informazioni viene silenziosamente trasmessa al mercato via IV.
Limitando l’attenzione alle opzioni su indici, le IV associate ai diversi strike formeranno uno skew, quindi le put OTM avranno IV maggiore delle call OTM.
L’asimmetria della distribuzione dei rendimenti e la paura associata ai ribassi, generano questa forma che e’ assolutamente comune. Vedere uno skew non puo’ quindi fornire alcuna indicazione operativa in quanto non riflette particolari aspetttative ma e’ semplicmente una conseguenza di fatti gia’ noti.
Affinche’ si possano cogliere segnali di allerta lanciati dai market maker, via IV, e’ quindi necessario monitorare in real time alcune grandezze che ci possano aiutare nella nostra operativita’. Partiamo con Eurostoxx 50 e scegliamo le scadenze di marzo 2014 (scadenza 1) e aprile 2014 (scadenza 2).
Le grandezze potrebbero essere le seguenti:
- differenziale IV di call vs put ATM scadenza 1: uno straddle ATM sara’ prezzato in modo da non dare un vantaggio al compratore ne’ al venditore. Se il market maker dovesse avere un’aspettativa circa la direzione, al fine di mantenere il prezzo fair verra’ generato un bias nella componente temporale dei prezzi.
- differenziale put ATM scadenza 2 vs scadenza 1: si monitora la parte a breve di un’ipotetica struttura a termine delle IV ATM. Un aumento della IV a scadenza 1 a scapito della scadenza 2 potrebbe essere la conseguenza di un’aspettativa per un maggiore rischio percepito sulla scadenza 1, quindi a breve scadenza.
- differenziale put 25-delta vs call 25-delta scadenza 1: si monitora l’entita’ dello skew. Esiste un’area di valori di skew che puo’ essere definita “strutturale”, quindi non informativa. Ma valori che si discostano da quest’area possono avere una valenza operativa.
Tutta la difficolta’ sta nell’identificare dei valori limite oltre i quali questi differenziali possono essere considerati come alert. Nella difficolta’ di identificare tali valori chiave, resta la possibilita’ di monitorare l’evoluzione dei differenziali per identificare movimenti improvvisi che creano una distorsione dell’intera superficie di IV.
Avendo limitato il numero delle possibili grandezze da monitorare, l’intento e’ quello di analizzare la dinamica di punti chiave della superficie per leggere le informazioni che i market maker passano al mercato via IV.
I 3 differenziali di cui sopra, saranno le nostre 3 grandezze da monitorare e, affinche’ si possano definire dei livelli trigger occorre un set di regole. Riprendendo le indicazioni fornite da Tiziano, si potrebbe creare un processo a 2 fasi:
- confronto tra volatilita’ storica e IV ATM
- analisi dei singoli differenziali su finestra mobile
L’IV e’ funzione della volatilita’ storica (e quindi di tutta l’informazione pubblicamente disponibile) e di un’aspettativa (non necessariamente pubblica).
Se il mercato prezza una IV piu’ bassa della volatilita’ storica ci si puo’ ragionevolmente aspettare un periodo di poco stress.
Se la IV assume valori superiori, allora aumenta l’incertezza. A quel punto occorre monitorare i differenziali per vedere come e quando particolari aspettative iniziano ad essere prezzate dal mercato.
Tiziano suggerisce di calcolare la media mebile a 30 e 50 periodi dei vari differenziali. Su timeframe molto bassi (es. 1 minuto) questo offre la possibilita’ di cogliere movimenti dello skew e della struttura a termine che possano aiutare l’operativita’ direzionale.
Un’improvviso aumento dello skew (con il valore a 30 periodi del differenziale numero 3 che supera il valore a 50 periodi), specie in un trend rialzista, potrebbe infatti suggerire un movimento correttivo.
Analogamente, una riduzione dello skew, in un trend ribassista potrebbe suggerire l’aumento del rischio di vedere un imminente rimbalzo (magari solo tecnico, da coperture).
Stessa logica andrebbe seguita per gli altri due differenziali, permettendo cosi’ di monitorare piu’ dimensioni della superficie di IV.
Mi rivolgo a chiunque fosse interessato ad approfondire l’argomento e a chiunque abbia gia’ dimestichezza con la programmazione in Fiuto per discutere in maggiore dettaglio il tutto e cercare di capire in che misura si possa implementare un sistema da mettere poi in simulazione condivisa.
Grazie mille.
-
10-03-14, 17:34 #2
- Data Registrazione
- Jan 2011
- Località
- Castiglioncello (LI)
- Messaggi
- 240
-
10-03-14, 17:46 #3
- Data Registrazione
- Dec 2011
- Messaggi
- 571
Ottimo Ismael!
Avere un punto di partenza aiuterà molto a familiarizzare con i concetti e con il linguaggio di programmazione.
Potremmo partire da lì per vedere se e cosa aggiungere/modificare per ottenere un sistema testabile.
Ti ringrazio sin da ora per il contributo.
-
10-03-14, 23:45 #4
- Data Registrazione
- Feb 2010
- Messaggi
- 66
Questo studio è molto interessante, anche se purtroppo non posso esservi d'aiuto nella programmazione.....
vorrei però chiedervi quale può essere guardando semplicemente ad occhio nudo un allert sui valori della IV per capire se sta nascendo un trend.
Oggi pomeriggio osservavo le IV su sp500,dax e eurostoxx, ed era ben visibile che la discesa avvenuta nel primo pomeriggio era prezzata nelle put ed avevano una vola anche del 50% maggiore delle call. Ma dalle 15,30 16,00 cominciava la salita e le put rimanevano sempre con molta più vola delle call. Quindi sapendo che comunque le put hanno una vola piu alta mi potrei aspettare un trend quando la vola è maggiore per esempio del 20% tra put e call? Oppure può essere tardivo vedere la vola sulle call maggiore delle put e forse dovrei considerare una variazione della vola del 20% sulla medesima opzione?
-
11-03-14, 09:00 #5
Proprio per avere un valore oggettivo e non soggettivo ho proposto di svolgere pubblicamente questo progetto che si realizzerà codificando quello che ho scritto e il risultato sarà la risposta alla tua domanda.
Intanto nel video che ho registrato vedi il risultato applicato...se corri dietro a due lepri, non ne prendi nemmeno una.
-
11-03-14, 10:14 #6
- Data Registrazione
- Jan 2011
- Località
- Castiglioncello (LI)
- Messaggi
- 240
-
11-03-14, 10:24 #7
- Data Registrazione
- Jan 2011
- Località
- Castiglioncello (LI)
- Messaggi
- 240
- Per put/call 25-delta intendi opz con delta .25 ?
- L'ATM come lo definiamo?
se prendiamo un solo strike può variare durante la giornata, io ho usato 3/4 strike fissi, scelti verso le 9:40...
- Per la misura della volatilità mi sembra sufficiente usare i prezzi, tanto interessano solo i differenziali (o sbaglio?)Ultima modifica di Ismael; 11-03-14 alle 10:56
E' difficile vedere un gatto nero in una stanza buia, specialmente se non c'è.
-
11-03-14, 14:21 #8
- Data Registrazione
- Jan 2011
- Località
- Castiglioncello (LI)
- Messaggi
- 240
Allego codice che:
1. aggiunge 10 opzioni atm (5 calls e 5 puts per scadenza)
2. calcola differenza vola tra 5 put e 5 call scadenza 1
3. caloola differenza vola tra 5 put scadenza 1 e 5 put scadenza 2
Scusate eventuali ciofeche scritte...
' SCRIPT PERSONALITY: BASIC ' ' Tutte le dim sono da rivedere uses classes dim mainUnderlying as TUnderlying dim controllo dim atmstrike dim under as tsecurity dim price dim underisin dim atmvola dim atmexp dim nextexp,nextexpma,nextexpanno,nextexpnc ,j,i, next2exp,next2expma dim atmcall as toption dim calls as toption = [0,0,0,0,0] dim puts as toption = [0,0,0,0,0] dim calls2 as toption = [0,0,0,0,0] dim puts2 as toption = [0,0,0,0,0] dim sommaevolacalls as single = 0 dim sommaevolaputs as single = 0 dim sommavolacalls as single = 0 dim sommavolaputs as single = 0 dim a as double dim strikestep, strikeas, sommacalls1, sommaputs1, diffvolaputcall1, sommaputs2, diffvolaput1put2 dim ore as Word, minuti as Word, secondi as Word, usec as Word dim volacallbs, volaputbs dim pricea As Double, delta As Double, gamma As Double, theta As Double, vega As Double, rho As Double, timeValue As Double, implVolatility As Double dim diffvola dim count = 0 dim ciao as tstringlist = [0,0,0,0,0,0,0,0] dim file as tstringlist dim percorso as string dim anno, mese, giorno, sanno, smese, sgiorno ,s2anno,s2mese,s2giorno ' definizioni generiche under = CurrentStrategy.GetMainUnderlying price = CurrentStrategy.GetMainUnderlyingprice underisin = under.isin 'strikestep = intervallo tra strike strikestep = GetNextStrike(underisin,price) - GetPreviousStrike(underisin,price) atmstrike = GetNearestStrike(underisin, price) nextexp = CDate(GetNextExpiry(underisin, now())) next2exp = cdate (getnextexpiry(underisin,now()+30)) decodedate(nextexp,sanno,smese,sgiorno) decodedate(next2exp,s2anno,s2mese,s2giorno) DecodeTime(Now(), ore, minuti, secondi, usec) DecodeDate(Now(), anno, mese, giorno) 'nextexpma è la scadenza in formato stringa, per ora funziona solo fino ad ottobre :-) nextexpma = "0"+cstr(smese) + "-" + cstr(sanno) next2expma = "0"+cstr(s2mese) + "-" + cstr(s2anno) 'inserimento nella strategia delle 5 + 5 opzioni più atm *2 scadenze for i=0 to 4 step 1 CurrentStrategy.AddParametricOption(underisin,CALL,i-2,0) CurrentStrategy.AddParametricOption(underisin,PUT,i-2,0) next for i=0 to 4 step 1 CurrentStrategy.AddParametricOption(underisin,CALL,i-2,30) CurrentStrategy.AddParametricOption(underisin,PUT,i-2,30) next 'assegnazione di una variabile array ad ogni opzione for i = 0 to 4 strikeas = cstr(atmstrike + (i-2)*strikestep) calls[i] = CurrentStrategy.GetbyName("C @ "+strikeas+" "+nextexpma) puts[i] = CurrentStrategy.GetByName("P @ "+strikeas+" "+nextexpma) next for i = 0 to 4 strikeas = cstr(atmstrike + (i-2)*strikestep) calls2[i] = CurrentStrategy.GetbyName("C @ "+strikeas+" "+next2expma) puts2[i] = CurrentStrategy.GetByName("P @ "+strikeas+" "+next2expma) next 'calcolo della differenza tra volatilità put e call scadenza 1 sommacalls1 = calls[0].Volatility + calls[1].Volatility +calls[2].Volatility +calls[3].Volatility +calls[4].Volatility sommaputs1 = puts[0].Volatility + puts[1].Volatility + puts[2].Volatility + puts[3].Volatility + puts[4].Volatility diffvolaputcall1 = sommacalls1 - sommaputs1 'calcolo della differenza tra volatilià put scadenza 1 e put scadenza2 sommaputs2 = puts2[0].Volatility + puts2[1].Volatility + puts2[2].Volatility + puts2[3].Volatility + puts2[4].Volatility diffvolaput1put2 = sommaputs2 - sommaputs1
tutte i dim sono da rivedereE' difficile vedere un gatto nero in una stanza buia, specialmente se non c'è.
-
11-03-14, 15:01 #9
- Data Registrazione
- Dec 2011
- Messaggi
- 571
Originariamente Scritto da Ismael
Originariamente Scritto da Ismael
1) in chiusura del giorno precedente si guarda il close del VSTOXX (supponendo di analizzare l'Eurostoxx)
2) il valore del VSTOXX e' un dato annualizzato per cui lo dividiamo per la radice quadrata di 252 (i giorni di borsa aperta in un anno) ed otteniamo la volatilita' implicita giornaliera
3) Moltiplichiamo il valore ottenuto al punto precedente per il close dell'indice ottenendo un valore (in punti) che rappresenta il range di variabilita' atteso per il giorno. Supponiamo che la chiusura sia stata 3100 e che la vola giornaliera al punto 2 (in punti indice) e' 30. Quindi ci aspettiamo per il giorno successivo un movimento tra 3070 e 3130. Consideriamo gli strike interni a questo range come gli strike ATM per la giornata successiva per cui la IV di riferimento sara' una media delle IV degli strike 3075, 3100 e 3125.
Ma mi interesserebbe sapere se ci sono altre idee in merito.
Originariamente Scritto da Ismael
Comunque, giusto per iniziare ad avere un'idea circa i valori delle variabili che intendiamo monitorare, ho recuperato dei dati daily su Bloomberg. Purtroppo non ho accesso a dati con frequenza maggiore ma vi mostro le distribuzioni di frequenza per capire quale sia il valore medio di riferimento e come i dati si distribuiscano attorno a questo valore.
I dati vanno dal 2 gennaio 2006 al 10 marzo 2014 e fanno riferiemento all'indice Eurostoxx.
In rosso trovate evidenziata l’area che rappresenta una frequenza attorno al 70%. Quindi, in un’ottica frequentista del concetto di probabilita’, possiamo dire che c’e’ un 70% di probabilita’ che il valore del differenziale analizzato assuma valori in quel range.
Iniziamo con il differenziale delle IV Put ATM (prima scadenza) e IV Put ATM (seconda scadenza).
Il valore medio di questo differenziale e’ leggermente negativo (-0.28) per cui in media la Put ATM con scadenza piu’ vicina ha implicita nel prezzo una IV leggermente minore rispetto all’analoga Put con scadenza successiva. Valori tra +1 e -1 hanno una frequenza totale di circa il 70%.
Distribuzione dello skew (differenziale tra IV Put 25-delta e IV Call 25-delta sulla prima scadenza):
La media e’ positiva (4.57) per cui, come ci si aspettava nel caso di un indice azionario, in media le Put OTM prezzano una IV maggiore rispetto alle Call OTM (skew).
Valori tra +2.5 e +7.5 hanno una frequenza totale di circa il 70%.
Distribuzione del differenziale tra IV Put ATM e IV Call ATM sulla prima scadenza:
La media e’ leggermente negativa (-0.8) per cui in media sulla prima scadenza le Call ATM hanno prezzato una IV maggiore rispetto alle Put ATM.
Tuttavia, valori tra +1 e +2 sono quelli con una frequenza totale di circa il 70%.
Infine la distribuzione del differenziale tra IV Put ATM e IV Call ATM sulla seconda scadenza:
Anche in questo caso la media e’ leggermente negativa (-0.22), con valori tra +0.5 e +1 che hanno una frequenza totale di circa il 70%.
P.S. Chiedo a Tiziano e a chiunque abbia gia' familiarita' con questi dati di confermare la ragionevolezza dei risultati ottenuti. Personalmente ho considerato i dati come buoni non avendo la possibilita' di effettuare verifiche e confronti. Grazie.Ultima modifica di the learner; 11-03-14 alle 15:11
-
11-03-14, 16:55 #10