Visualizzazione dei risultati da 1 a 3 su 3
  1. #1

    [VBA] non capisco la differenza...

    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:
    Option 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
    e questo

    Option 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
    facendo i calcoli a manina... il valore corretto é quello del primo codice, ma non riesco a capire il perché devo inserire
    Wvariance = 0

    e due righe dopo

    Wvariance = Wvariance+ pvec(i) * (vvec(i) - expx) ^ 2

    lumiari di VB pronunciatevi... grazie
    My soul is painted like the wings of butterflies Fairytales of yesterday will grow but never die I can fly - my friends!

  2. #2
    Wvariance = 0

    serve per fare in modo che quella variabile parta dal valore 0 ogni volta che richiami la funzione, per evitare che calcolando due varianze successive il risultato della seconda sia ex la varianza della prima + quella della seconda.

    Questo invece:

    for...
    Wvariance = Wvariance + pvec(i) * (vvec(i) - expx) ^ 2
    next i

    è solamente un modo per calcolare la varianza (somma degli scarti dalla media elevati al quadrato e moltiplicati per la rispettiva probabilità
    xxx

  3. #3
    :metallica

    grazie mille... sospettavo fosse cosí... ma io dei ragazzi di IT mica mi fido...
    My soul is painted like the wings of butterflies Fairytales of yesterday will grow but never die I can fly - my friends!

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.