Ovviare al contango/backwardation

Si ma quando vai a mettere i soldi reali sui futures gli "sbalzi dell'effetto cont. o back." (in realtà sarebbe più corretto parlare degli effetti dovuti al contango o backwardation) ci sono (e non possono essere nemmeno ignorati nell'intraday), quindi perchè eliminarli nel backtest?

Esempio con il Natural Gas... In blu il continuo di Bloomberg (senza salti!), in rosso ciò che si sarebbe portato a casa un'investitore che avesse aperto la posizione all'inizio del periodo e poi, in questo caso, rollato la posizione sul front month 3 giorni prima della scadenza (unità di misura di partenza è $/MMBtu)... Secondo te lo puoi ignorare l'effetto del roll nel tuo backtest e poi pensare che il risultato andando a mercato sia lo stesso?

Ma io non parlo del continuo come intendi tu.
Tu parli del cash, o prezzi spot NON TRADABILI.
Io per continuo intendo (nel caso del Vstoxxmini) la series storica che unisce tutte le scadenze senza aggiustare i prezzi.
In questa maniera il TS non è affidabile in quanto molte operazioni sono fittizie.
Il metodo che ho postato sopra permette di avere un idea molto più pertinente alla realtà.
 
Ma io non parlo del continuo come intendi tu.
Tu parli del cash, o prezzi spot NON TRADABILI.
Io per continuo intendo (nel caso del Vstoxxmini) la series storica che unisce tutte le scadenze senza aggiustare i prezzi.
In questa maniera il TS non è affidabile in quanto molte operazioni sono fittizie.
Il metodo che ho postato sopra permette di avere un idea molto più pertinente alla realtà.
Se P1 è il prezzo del primo contratto, che acquisti ad un generico momento t-i e che decidi di rollare al tempo t, il tuo rendimento sul quel contratto sarà:
P1(t) - P1(t-i)
Se ipotizzi di prendere una posizione nel secondo contratto allo stesso tempo t (ipotesi tra l'altro non necessariamente realistica se coincide con il close...), il rendimento dopo il primo giorno sarà:
P2(t+1) - P2(t)

Ogni altro aggiustamento che fai alla serie storica ha buone probabilità di differire dall'esperienza di trading effettiva. Per questo raccomandavo di partire dai rendimenti.

Il tuo metodo non l'ho capito, non so se è colpa mia, o come si diceva in un altro thread "is not even wrong".
 
E' un bel problema.....

facile in discrezionale ma più complesso in un TS automatico.

- Ti ci vogliono le storiche di tutti i contratti,
- in una data fissata a priori (o con considerazioni sulla liquidità o altro) rolli capitalizzando in più o in meno la differenza
- ti ricalcoli tutti i parametri del ts con la nuova serie storica.

e vai avanti.....

Così ad occhio mi sembra il modo giusto.

il passo 3 potrebbe darti una posizione differente dalla attuale per cui andrebbe anticipato rispetto al passo 2
 
stai prima ad escludere dai conteggi il rendimento del giovedi/venerdi' della settimana delle scadenze....3° venerdi' del mese

poi ogni prodotto ha la sua
esempio il bund

10° giorno di calendario del mese di scadenza, o giorno di Borsa aperta precedente
 
Ultima modifica:
Al momento ho seguito questo metodo il risultato pare efficace.

certi casi i dati di mercato non possono essere utilizzati in forma grezza ma devono essere "aggiustati". Questo avviene per tutti i dati relativi ai contratti futures e per i dati relativi alle azioni principalmente in caso di stacco dei dividendi, "stock splitting" o aumenti di capitale.
Per quello che riguarda i futures, il problema nasce dal fatto che ogni contratto future è quotato per un periodo di tempo molto limitato: normalmente non piú di tre mesi.
Per esempio il future del BTP prevede consegna a Marzo, Giugno, Settembre, Dicembre. Questo significa che da Genneaio ai primi di Marzo il contratto di gran lunga piú liquido è quello scadente a Marzo, mentre da Marzo a Giugno il contratto piú liquido è quello di Giugno e cosí via.
Agli inizi di Marzo ci troviamo perció in una situazione dove il contratto di Marzo quota un prezzo che è praticamente uguale a quello di un BTP con scadenza e struttura cedolare simili a quelle previste dal contratto stesso, mentre il contratto di Giugno quota circa come il prezzo a termine a 3 mesi dello stesso BTP.
La serie storica riporta tuttavia uno dietro l'altro i prezzi del future sulla sua scadenza piú liquida, per cui esiste una data in Marzo in cui si passerà dal contratto di Marzo al contratto di Giugno. La differenza puó essere alle volte rilevante, e ció che conta è che occorre impedire che il nostro sistema registri un profitto od una perdita fittizia dovute semplicemente al passaggio di contratto.
In pratica il metodo per costruire una serie di prezzi di contratti future
continua e testabile è il seguente:
• si comincia rilevando i prezzi del contratto piú vicino alla scadenza (detto "nearest future") che tipicamente è il piú liquido: se si è in febbraio e si parla del BTP si prenderà il contratto di Marzo;
• si continua cosí fino a che, ad un certo punto (presumibilmente ai primi di Marzo), il contratto di Marzo diviene meno liquido di quello di Giugno (questa informazione la si desume dai dati di Volume riportati dal mercato) definiamo questa data come data di "rollover";
• il giorno in cui questo accade si rileva la differenza tra i close del contratto di Giugno e quello di Marzo, la si registra e la si sottrae dai prezzi del contratto di Giugno continuando cosí fino a che il contratto di Settembre non diventa piú liquido di quello di Giugno;
• si misura a questo punto la differenza tra il contratto di Settembre e quello di Giugno, si somma tale differenza a quella già registrata, si sottrae il dato cosí ottenuto dalle rilevazioni di Settembre.


Una variante del metodo che Nico da qualche parte ha trovato e' il modo piu' diffuso per affrontare il problema, ed e' quello che perlopiu' uso anch'io.

La differenza sta che l'adjustment (= la differenza in prezzo fra due scadenze nel momento del rollover) lo applichi alla parte piu' vecchia della seria (o se vuoi procedi all'indietro). Dovresti trovare un'infinita' di informazione in giro (in inglese), cerca "back-adjusted continuous contract".

Il vantaggio e' che cosi' facendo i prezzi recenti combaciano con i prezzi che vedi nel mercato.

Svantaggi sono che
1- e' possibile ottenere prezzi negativi in caso di serie molto lunghe, in qual caso puoi semplicemente sommare una certa quantita' a tutta la serie fino a farla diventare tutta >0 (perdendo il vantaggio di prima) o dividere il continuo in 2 tronconi (meglio comunque di averne 400 :) ).

2- i riferimenti in % saranno diversi dal caso dei singoli contratti (questo vale anche per il forward-adjustment). A seconda di quello che fai, questo puo' o no avere un impatto

Un altro modo che forse leggerai e' quello moltiplicativo, che pero' non mi piace perche' distorce il PnL che otterresti in realta' (ma non ha gli svantaggi di sopra, di cui a me non frega pero').

Paolo:
Costruendo il continuo come da sopra, si puo' (facendo attenzione ad un paio di cose) semplicemente usare questo come se fosse appunto un'unica serie. Se poi usi la stessa serie continua per operare non ci saranno discrepanze.



Si ma quando vai a mettere i soldi reali sui futures gli "sbalzi dell'effetto cont. o back." (in realtà sarebbe più corretto parlare degli effetti dovuti al contango o backwardation) ci sono (e non possono essere nemmeno ignorati nell'intraday), quindi perchè eliminarli nel backtest?

Esempio con il Natural Gas... In blu il continuo di Bloomberg (senza salti!), in rosso ciò che si sarebbe portato a casa un'investitore che avesse aperto la posizione all'inizio del periodo e poi, in questo caso, rollato la posizione sul front month 3 giorni prima della scadenza (unità di misura di partenza è $/MMBtu)... Secondo te lo puoi ignorare l'effetto del roll nel tuo backtest e poi pensare che il risultato andando a mercato sia lo stesso?


Se ci pensi, a seconda di quello che fai, usare un contratto sintentico continuo per le simulazioni non e' affatto una brutta soluzione. E' semplicemente un metodo efficiente di affrontare il problema.

Il modo di operare sottinteso e' appunto quello di fare il roll tutto in una volta - e piu' che un'assunzione e' semplicemente un modus operandi che ti semplifica la vita e che se non hai un'opinione particolare sul roll non ti costa nulla seguire.

I "salti" vanno giustamente annullati con un adjustment perche' assumi che in quel momento appunto faresti il roll e la differenza in prezzo fra le 2 scadenze scompare nel momento in cui chiudi la posizione.

Cioe' come hai detto tu, in realta' fai:

P1(t) - P1(t-i)
e
P2(t+1) - P2(t)

mentre in continuo vedresti solamente:

P(t+1) - P(t-i)


Quindi il PnL finale e' lo stesso, ma se il continuo non e' aggiustato vedrai un balzo nel mark-to-market che in verita' non c'e'.

Una discrepanza nell'usare un continuo e' che trascuri i costi di transazione del roll, che che comunque non dovrebbero davvero fare la differenza (e che volendo potrebbero anche essere inseriti).

Altra cosa e' che cosi' facendo si perde ovviamente la term-structure.
Ma come da bberg in questo caso si puo' semplicemente costruire la serie continua usando ad esempio il 2/3/4/etc contratto e poi fare lo spread/flies/combinazioni varie e analizzare questo (con il conseguente modo di operare sottinteso).
 
Una variante del metodo che Nico da qualche parte ha trovato e' il modo piu' diffuso per affrontare il problema, ed e' quello che perlopiu' uso anch'io.

La differenza sta che l'adjustment (= la differenza in prezzo fra due scadenze nel momento del rollover) lo applichi alla parte piu' vecchia della seria (o se vuoi procedi all'indietro). Dovresti trovare un'infinita' di informazione in giro (in inglese), cerca "back-adjusted continuous contract".

Il vantaggio e' che cosi' facendo i prezzi recenti combaciano con i prezzi che vedi nel mercato.

Svantaggi sono che
1- e' possibile ottenere prezzi negativi in caso di serie molto lunghe, in qual caso puoi semplicemente sommare una certa quantita' a tutta la serie fino a farla diventare tutta >0 (perdendo il vantaggio di prima) o dividere il continuo in 2 tronconi (meglio comunque di averne 400 :) ).

2- i riferimenti in % saranno diversi dal caso dei singoli contratti (questo vale anche per il forward-adjustment). A seconda di quello che fai, questo puo' o no avere un impatto

Un altro modo che forse leggerai e' quello moltiplicativo, che pero' non mi piace perche' distorce il PnL che otterresti in realta' (ma non ha gli svantaggi di sopra, di cui a me non frega pero').

Paolo:
Costruendo il continuo come da sopra, si puo' (facendo attenzione ad un paio di cose) semplicemente usare questo come se fosse appunto un'unica serie. Se poi usi la stessa serie continua per operare non ci saranno discrepanze.






Se ci pensi, a seconda di quello che fai, usare un contratto sintentico continuo per le simulazioni non e' affatto una brutta soluzione. E' semplicemente un metodo efficiente di affrontare il problema.

Il modo di operare sottinteso e' appunto quello di fare il roll tutto in una volta - e piu' che un'assunzione e' semplicemente un modus operandi che ti semplifica la vita e che se non hai un'opinione particolare sul roll non ti costa nulla seguire.

I "salti" vanno giustamente annullati con un adjustment perche' assumi che in quel momento appunto faresti il roll e la differenza in prezzo fra le 2 scadenze scompare nel momento in cui chiudi la posizione.

Cioe' come hai detto tu, in realta' fai:

P1(t) - P1(t-i)
e
P2(t+1) - P2(t)

mentre in continuo vedresti solamente:

P(t+1) - P(t-i)


Quindi il PnL finale e' lo stesso, ma se il continuo non e' aggiustato vedrai un balzo nel mark-to-market che in verita' non c'e'.

Una discrepanza nell'usare un continuo e' che trascuri i costi di transazione del roll, che che comunque non dovrebbero davvero fare la differenza (e che volendo potrebbero anche essere inseriti).

Altra cosa e' che cosi' facendo si perde ovviamente la term-structure.
Ma come da bberg in questo caso si puo' semplicemente costruire la serie continua usando ad esempio il 2/3/4/etc contratto e poi fare lo spread/flies/combinazioni varie e analizzare questo (con il conseguente modo di operare sottinteso).

:up::up:

infatti con questo metodo i dati finali non corrispondono alle attuali quotazioni.
 
stai prima ad escludere dai conteggi il rendimento del giovedi/venerdi' della settimana delle scadenze....3° venerdi' del mese

poi ogni prodotto ha la sua
esempio il bund

10° giorno di calendario del mese di scadenza, o giorno di Borsa aperta precedente

Si si io parto dal 3° mercoledì del mese.
 
Non avendo la sicurezza di aver fatto bene allego le serie storiche per chi volesse provare a fare una verifica. La prima colonna riporta le quotazioni del continuo, la seconda delle scadenze prese singolarmente e unite in un unica serie. Nella terza e quarta i risultati da me ottenuti. La trasformazione inizia da 3000 celle (circa) in poi.

Grazie a coloro che vorranno provarci.
 

Allegati

Users who are viewing this thread

Back
Alto