Moving window of observations

di il
3 risposte

Moving window of observations

Ciao a tutti.
Sto facendo un lavoro in Matlab in cui mi è richiesto tra le altre cose di calcolare i Past Returns su una moving windows of 400 past observations..ho pensato che la cosa migliore sia usare il ciclo for, ma il mio script non funziona! Mi potete aiutare?

N_obs_400= 400;
end_date= datenum(2011,10,31)
index_end = find (date_num == end_date)
ts_end= index_end-1

for i= 0:N_obs_400

PastReturns(i) =ISP_ENI_TIT((768-N_obs_400+i):977-N_obs_400+i,:)

end

dove 768- 400 è la starting date . Di lì man mano la mia finestra temporale di dati si deve muovere in avanti fino ad arrivare alla end date indicizzata come 977. Ovviamente ISP_ENI_TIT è una matrice che ho già definito in precedenza.
Help!
E grazie in anticipo!

Elisa

3 Risposte

  • Re: Moving window of observations

    Un errore sta nell'indicizzazione del ciclo for.
    Matlab inizia a contare da 1 e non da zero, quindi PastReturns(0) non esiste e dà errore. Poi, stai cercando di assegnare un vettore (mettendo i : stai indicando un intervallo di valori) ad un elemento di vettore (PastReturns(i) si aspetta un numero).
    Poi, forse non ho capito bene lo scopo del ciclo, ma credo che avresti lo stesso risultato scrivendo semplicemente così:
    PastReturns=ISP_ENI_TIT((768-N_obs_400):977-N_obs_400,:)
  • Re: Moving window of observations

    Ma in questo modo la mia finestra temporale non si sposta! (o si?)
    E in ogni caso lo scopo di tutto è calcolare il Value at Risk giornaliero per quest arco temporale, quindi ho bisogno avere un vettore di valori per il VaR, uno per ogni giorno del periodo..usando la tua soluzione ho un unico valore per l'intero periodo..
  • Re: Moving window of observations

    Premesso che non ho idea di cosa stai parlando (past returns, value at risk, ecc), perchè non conosco l'argomento, se parlassi in termini di "numeri/vettori" che vuoi ottenere forse riuscirei ad aiutarti.
    Se vuoi che pastReturns sia un vettore devi scrivere così:
    for i=1:n
    PastReturns(i,:) =ISP_ENI_TIT((768-N_obs_400+i):977-N_obs_400+i,:)
    end
    Ma non ha senso se ISP_ENI_TIT è una matrice perché anche PastReturns sarà una matrice...
    Quindi, se dici che ISP_ENI_TIT è una matrice e la finestra è un vettore, come vuoi che si muova? Deve "andare a capo" nella matrice?
Devi accedere o registrarti per scrivere nel forum
3 risposte