Paolo1956 ha scritto:
ps: prova a pulire il vettore corr.data dagli elementi non validi col solito na.omit()
Grazie mille per l'aiuto Paolo,
alla fine sono riuscito a risolvere in un'altro modo.. il problema stava nella sintassi dato che nella funzione a quanto pare mancavano degli argomenti..
Codice:
# Codice Errato
[COLOR="Red"]my_data$Corr = rollapply(Corr.data, slow_window_width, cor, by.column = FALSE)[/COLOR]
# Codice Corretto
[COLOR="Blue"]my_data$Corr = rollapply(Corr.data, slow_window_width, function(x) cor(x[,1], x[,2]), by.column = FALSE)[/COLOR]
E grazie anche per il consiglio sull'uso del ciclo 'for' per contare i cambi di posizione..
In proposito sto pensando di creare una funzione apposita che aggiunga un'ulteriore colonna nel vettore delle posizioni '
Signals'..
Da qui poi ottenere, attraverso altri maneggi che devo ancora studiarmi, la serie dei trades con data di apertura, data chiusura, valori, numero dell'operazione e rendimento..
NB: ho corretto il codice pubblicato nel precedente post.
Ora dato che ci sono, per i curiosi allego anche i risultati del lavoro 'finito'.
Rispetto alla QuantVix originale, come ho già spiegato nei post precedenti, ho posto due filtri, uno ai segnali Long basato sul valor medio delle ultime 20 chiusure del Vix, di modo che se risulta superiore ad un certo livello la strategia investe sul cash piuttosto che sull'indice azionario.
L'altro sui segnali short dove in caso il livello di correlazione rolling a 20 periodi tra il sottostante azionario e quello obbligazionario superi un certo valore, allora anche in questo la strategia investe sul cash piuttosto che sul sottostante obbligazionario.
I valori dei filtri utilizzati sono rispettivamente un prezzo medio di chiusura pari a '40' per il Vix e un livello di correlazione massimo tra stocks e treasuries bonds pari a '-0.40'.
Infine la finestra di calcolo dell'asimmetria rolling tra prezzi Open/Close del Vix, così come del prezzo medio di chiusura del Vix e dei livelli di correlazione tra i due asset è pari a 20 rilevazioni.
La strategia così modificata ha generato 234 cambi di segnale, investendo da feb 2004 ad oggi per il 62% del tempo sull'azionario, per il 17% sull'obbligazionario e per il 16% sul cash.
Codice:
> table.AnnualizedReturns(R, scale = 252)
Position
Annualized Return 0.1804
Annualized Std Dev 0.1582
Annualized Sharpe (Rf=0%) 1.1400
> table.Drawdowns(R)
From Trough To Depth Length To Trough Recovery
1 2008-06-06 2008-11-13 2009-08-04 -0.2186 293 113 180
2 2011-09-01 2011-10-03 2011-11-01 -0.1487 43 22 21
3 2007-06-05 2007-08-16 2008-01-22 -0.1297 160 52 108
4 2012-12-21 2013-06-24 2013-09-17 -0.1219 185 126 59
5 2010-06-16 2010-07-06 2010-08-06 -0.1071 37 14 23
>
Sig Ernesto ha scritto:
Ora, resetta tutto quello che hai fatto, che hai ipotizzato e che hai, con buona volontà e pazienza (uguali a: esperienza acquisita). Io ti chiedo: "oppure?" e ti rimando alla affermazione: "You Can't Get What You Want (Till You Know What You Want) "
Grazie per le parole di incoraggiamento, graditissime..
Resetto tutto volentieri, ho postato i grafici delle modifiche solo per non lasciare le cose a metà, ma sono pronto a ripartire da zero osservando il problema da un'altra prospettiva..
Prendendo spunto dal titolo dell'ottimo pezzo di
Joe Jackson mi pare che sul
'What we want' non ci siano dubbi, l'obiettivo primario è sempre quello di migliorare il rapporto R/R della strategia senza
overfittare troppo, il problema semmai è il come..
In proposito l'idea che mi sono fatto lavorando sulla QuantVix è che mentre i segnali Long, filtrati o meno, sono molto buoni, quelli Short lo sono un po meno con il sottostante attuale (TLT).
A questo punto mi sa che lavorare sulla scelta dei sottostanti come stai già facendo sia il modo migliore per sfruttare meglio il potenziale della QuantVix..