Premessa sintetica: sto cercando di automatizzare dei fogli in excel che pescano dei valori [prezzi=pvec] e probabilitį [vvec] da un database e che devono fare una serie di calcoli.
Tra questi c'é il rischio di portafoglio definito con la funzione sotto [una semplice varianza]. Non capisco concettualmente qual é la differenza tra questo codice:
e questoOption Base 1
Function Wvariance(vvec, pvec)
Dim expx
Dim i As Integer
If Application.Sum(pvec) <> 1 Or _
Application.Count(vvec) <> Application.Count(pvec) Then
Wvariance = -1
Exit Function
End If
expx = ExpVal(vvec, pvec) 'using the ExpVal function
Wvariance = 0
For i = 1 To Application.Count(pvec)
Wvariance = Wvariance + pvec(i) * (vvec(i) - expx) ^ 2
Next i
Wvariance = Application.Sum(Wvariance)
End Function
facendo i calcoli a manina... il valore corretto é quello del primo codice, ma non riesco a capire il perché devo inserireOption Base 1
Function Wvariance(vvec, pvec)
Dim expx
Dim i As Integer
If Application.Sum(pvec) <> 1 Or _
Application.Count(vvec) <> Application.Count(pvec) Then
Wvariance = -1
Exit Function
End If
expx = ExpVal(vvec, pvec) 'using the ExpVal function
For i = 1 To Application.Count(pvec)
Wvariance = pvec(i) * (vvec(i) - expx) ^ 2
Next i
Wvariance = Application.Sum(Wvariance)
End Function
Wvariance = 0
e due righe dopo
Wvariance = Wvariance+ pvec(i) * (vvec(i) - expx) ^ 2
lumiari di VB pronunciatevi... grazie![]()