Discussione: indicatore Varianza
-
19-11-13, 21:00 #1
- Data Registrazione
- Feb 2013
- Località
- Verona/Vicenza
- Messaggi
- 154
indicatore Varianza
Visto che stavo seguendo il post molto interessante di Thalos, ho provato a creare la funzione e il relativo script per ottenere la varianza......
Sono andato a cercarmi in rete la formula per il suo calcolo che risulta essere questa:
................n
s² = 1/n * ∑ (xi - x°)²
................i = 1
Ove con x° si intende la media campionaria. Con xi si indica invece la i-esima osservazione.
Ho quindi provato a realizzare il relativo script:
funzione
# Funzione per il calcolo della varianza # # dati n valori (Xi......Xn) si calcola prima la media (Xm) di questi valori nel periodo considerato # # la varianza è pari a 1/n*sommatoria da 1 a n di (Xi-Xm)^2 INPUTS: @periods(14) SET valmed = SMA(CLOSE, @periods) SET n = @periods SET k = SQUARE(CLOSE - valmed) SET somma = SUM(k, @periods) SET Varianza = 1 / n * somma
indicatore
INPUTS: @periods(14) SET PLOT1 = Varianza(@periods)
Provate a darci un occhiata per vedere se risulta corretto!!!
Io comunque ci ho provato......
Beppe
p.s.
peccato che i plot possano essere solo a linee e non a istogrammi.....Ultima modifica di masterci; 19-11-13 alle 21:25
-
19-11-13, 21:36 #2
- Data Registrazione
- Feb 2013
- Località
- Verona/Vicenza
- Messaggi
- 154
Mi ammonisco da solo!!!!
L'indicatore c'è già e si chiama Variance................
Vabbè ma io ho voluto fare esercizio ok?!?!?!?!?
A tal proposito chiedo a Tiziano o Andrea: perchè se plotto il mio indicatore mi restituisce risultati diversi da quello di BT???
Ho provato sia la formula relativa alla varianza di un campione (con n-1) sia quella relativa alla popolazione (con n) ma entrambi i risultati non coincidono......
Dove sbaglio?
Inoltre, perchè voi fate gli indicatori a istogramma e io non posso????
-
20-11-13, 09:54 #3
- Data Registrazione
- Dec 2012
- Messaggi
- 186
-
20-11-13, 10:29 #4
-
20-11-13, 11:41 #5
- Data Registrazione
- Feb 2012
- Località
- Pisa
- Messaggi
- 351
-
20-11-13, 14:35 #6
- Data Registrazione
- Sep 2013
- Località
- Monza
- Messaggi
- 186
Ultima modifica di maxmax68; 20-11-13 alle 14:50
-
20-11-13, 22:06 #7
- Data Registrazione
- Feb 2013
- Località
- Verona/Vicenza
- Messaggi
- 154
Grazie Andrea e sig. Bollinger!!!! Non lo avevo notato!!!
-
20-11-13, 22:35 #8
- Data Registrazione
- Feb 2013
- Località
- Verona/Vicenza
- Messaggi
- 154
Ciao Smash!
Non mi trovo.......
Faccio un esempio pratico che forse riesco a capire meglio!
Prendiamo il calcolo della varianza a 5 periodi di questo campione di 7 elementi:
1 = 3
2 = 5
3 = 9
4 = 2
5 = 4
-------------
6 = 7
7 = 5
la var(5) relativa all'elemento n. 5 prenderà come media gli elementi da 1 a 5: (3+5+9+2+4)/5 = 4.6
e quindi (sempre riferita all'elemento 5) sarà pari a 1/5 * (3-4.6)^2+(5-4.6)^2+(9-4.6)^2+(2-4.6)^2+(4-4.6)^2 = 27.152
la var(5) relativa allemente n. 6 prenderà come media gli elementi da 2 a 6: (5+9+2+4+7)/5 = 5.4
e quindi (sempre riferita all'elemento 6) sarà pari a 1/5 * (5-5.4)^2+(9-5.4)^2+(2-5.4)^2+(4-5.4)^2+(7-5.4)^2 = 29.072
e così via....
Quindi il valore di valmed, giustamente, deve variare perchè deve fare la media degli ultimi 5 elementi e spostare in avanti di un elemento la media man mano che procede nell'elemento successivo.....
Non so se mi sono spiegato!!!!
Valmed è un vettore che dovrebbe avere al suo interno tante medie dei 5 elementi precedenti....
-
20-11-13, 23:11 #9
- Data Registrazione
- Feb 2013
- Località
- Verona/Vicenza
- Messaggi
- 154
Capito l'inghippo!!!!!!
Grazie Max!
-
21-11-13, 14:29 #10
- Data Registrazione
- Feb 2012
- Località
- Pisa
- Messaggi
- 351
Il problema è che il vettore valmed lo volevi utilizzare per calcolare questa sommatoria (al posto di x°):
...n
∑ (xi - x°)²
...i = 1
in questo modo:
SET k = SQUARE(CLOSE - valmed) SET somma = SUM(k, @periods)
e non poteva andare bene perchè avresti dovuto calcolare la sommatoria di n elementi (xi - x°)² dove gli xi cambiano per n volte mentre gli x° hanno sempre lo stesso valore.
Nell'esempio numerico che hai citato:
per la varianza(5) relativa all'elemento n. 5 che prende come media gli elementi da 1 a 5;
la media è
(3+5+9+2+4)/5 = 4.6
mentre la sommatoria richiesta è
(3 - 4.6)² + (5 - 4.6)² + (9 - 4.6)² + (2 - 4.6)² + (4 - 4.6)²
Nel tuo codice invece i vettori CLOSE e valmed variano entrambi ad ogni elemento.Ultima modifica di Smash; 21-11-13 alle 14:44