Oggi è 22/12/2024, 17:01


La cassetta degli attrezzi

In questo spazio vengono discussi argomenti semplici che riguardano soprattutto chi è alle prime armi
  • Autore
  • Messaggio
Non connesso
Avatar utente

AZ13

  • Messaggi: 42818
  • Iscritto il: 28/09/2011, 22:27

Re: La cassetta degli attrezzi

Messaggio16/01/2012, 16:58

Calcolo del Vega della Put e della Call formula di Black-Scholes-Merton
Codice: Seleziona tutto
Function Vega(Prezzo, Strike, Giorni, Tasso, Volatilità, Optional Dividendo)
        Tempo = Giorni / 365
    If IsMissing(Dividendo) Then
        d1 = (Log(Prezzo / Strike) + (Tasso + Volatilità ^ 2 / 2) * Tempo) / (Volatilità * Sqr(Tempo))
        Vega = Round(Prezzo * Sqr(Tempo) * Normale(d1), 4)
   
    Else
        d1 = (Log(Prezzo / Strike) + (Tasso - Dividendo + Volatilità ^ 2 / 2) * Tempo) / (Volatilità * Sqr(Tempo))
        d2 = d1 - (Volatilità * Sqr(Tempo))
            Vega = Round(Prezzo * Sqr(Tempo) * Normale(d1) * Exp(-Dividendo * Tempo), 4)
    End If
End Function
Meno si rischia più si guadagna ...
Non connesso
Avatar utente

AZ13

  • Messaggi: 42818
  • Iscritto il: 28/09/2011, 22:27

Re: La cassetta degli attrezzi

Messaggio16/01/2012, 17:00

Calcolo del Theta della Call formula di Black-Scholes-Merton
Codice: Seleziona tutto
Function Call_Theta(Prezzo, Strike, Giorni, Tasso, Volatilità, Optional Dividendo)
    Tempo = Giorni / 365
If IsMissing(Dividendo) Then
    d1 = (Log(Prezzo / Strike) + (Tasso + Volatilità ^ 2 / 2) * Tempo) / (Volatilità * Sqr(Tempo))
    d2 = d1 - (Volatilità * Sqr(Tempo))
    A = Prezzo * Normale(d1) * Volatilità / (2 * Sqr(Tempo))
    B = Tasso * Strike * Exp(-Tasso * Tempo) * Application.NormSDist(d2)
    Call_Theta = Round(-A - B, 4)
Else
    d1 = (Log(Prezzo / Strike) + (Tasso - Dividendo + Volatilità ^ 2 / 2) * Tempo) / (Volatilità * Sqr(Tempo))
    d2 = d1 - (Volatilità * Sqr(Tempo))
    A = Prezzo * Normale(d1) * Volatilità * Exp(-Dividendo * Tempo) / (2 * Sqr(Tempo))
    B = Dividendo * Prezzo * Application.NormSDist(d1) * Exp(-Dividendo * Tempo)
    C = Tasso * Strike * Exp(-Tasso * Tempo) * Application.NormSDist(d2)
    Call_Theta = Round(-A + B - C, 4)
End If
End Function
Meno si rischia più si guadagna ...
Non connesso
Avatar utente

AZ13

  • Messaggi: 42818
  • Iscritto il: 28/09/2011, 22:27

Re: La cassetta degli attrezzi

Messaggio16/01/2012, 17:05

Calcolo del Delta della Call formula di Black-Scholes-Merton
Codice: Seleziona tutto
Function Call_Delta(Prezzo, Strike, Giorni, Tasso, Volatilità, Optional Dividendo)
    Tempo = Giorni / 365
If IsMissing(Dividendo) Then
    d1 = (Log(Prezzo / Strike) + (Tasso + Volatilità ^ 2 / 2) * Tempo) / (Volatilità * Sqr(Tempo))
    Call_Delta = Round(Application.NormSDist(d1), 4)
Else
    d1 = (Log(Prezzo / Strike) + (Tasso - Dividendo + Volatilità ^ 2 / 2) * Tempo) / (Volatilità * Sqr(Tempo))
    Call_Delta = Round(Application.NormSDist(d1) * Exp(-Dividendo * Tempo), 4)
End If
End Function
Meno si rischia più si guadagna ...
Non connesso
Avatar utente

AZ13

  • Messaggi: 42818
  • Iscritto il: 28/09/2011, 22:27

Re: La cassetta degli attrezzi

Messaggio16/01/2012, 17:07

Calcolo del prezzo teorico della Put formula di Black-Scholes-Merton

Codice: Seleziona tutto
Function Put_Europea(Prezzo, Strike, Giorni, Tasso, Volatilità, Optional Dividendo)
   Tempo = Giorni / 365
If IsMissing(Dividendo) Then
   d1 = (Log(Prezzo / Strike) + (Tasso + 1 / 2 * Volatilità ^ 2) * Tempo) / (Volatilità * Sqr(Tempo))
   d2 = d1 - (Volatilità * Sqr(Tempo))
   Put_Europea = Round(Strike * Exp(-Tasso * Tempo) * (1 - Application.NormSDist(d2)) - Prezzo * (1 - Application.NormSDist(d1)), 4)
Else
    d1 = (Log(Prezzo / Strike) + (Tasso - Dividendo + Volatilità ^ 2 / 2) * Tempo) / (Volatilità * Sqr(Tempo))
    d2 = d1 - (Volatilità * Sqr(Tempo))
   Put_Europea = Round(Strike * Exp(-Tasso * Tempo) * (1 - Application.NormSDist(d2)) - Prezzo * Exp(-Dividendo * Tempo) * (1 - Application.NormSDist(d1)), 4)
End If
End Function
Meno si rischia più si guadagna ...
Non connesso
Avatar utente

AZ13

  • Messaggi: 42818
  • Iscritto il: 28/09/2011, 22:27

Re: La cassetta degli attrezzi

Messaggio16/01/2012, 17:09

Calcolo della volatilità implicita della Call formula di Black-Scholes-Merton
Codice: Seleziona tutto
Function Call_Volatilità(Prezzo, Strike, Giorni, Tasso, Prezzo_Call, Optional Dividendo)
    Tempo = Giorni / 365
    High = 1
    Low = 0
If IsMissing(Dividendo) Then
    Do While (High - Low) > 0.0001
    If Call_Europea(Prezzo, Strike, Giorni, Tasso, (High + Low) / 2) > _
        Prezzo_Call Then
             High = (High + Low) / 2
             Else: Low = (High + Low) / 2
    End If
    Loop
    Call_Volatilità = (High + Low) / 2
Else
    Do While (High - Low) > 0.0001
    If Call_Europea(Prezzo, Strike, Giorni, Tasso, (High + Low) / 2, Dividendo) > _
        Prezzo_Call Then
             High = (High + Low) / 2
             Else: Low = (High + Low) / 2
    End If
    Loop
    Call_Volatilità = (High + Low) / 2
End If
End Function
Meno si rischia più si guadagna ...
Non connesso
Avatar utente

AZ13

  • Messaggi: 42818
  • Iscritto il: 28/09/2011, 22:27

Re: La cassetta degli attrezzi

Messaggio16/01/2012, 17:10

Calcolo della volatilità implicita della Put formula di Black-Scholes-Merton

Codice: Seleziona tutto
Function Put_Volatilità(Prezzo, Strike, Giorni, Tasso, Prezzo_Put, Optional Dividendo)
    Tempo = Giorni / 365
    High = 1
    Low = 0
If IsMissing(Dividendo) Then
    Do While (High - Low) > 0.0001
    If Put_Europea(Prezzo, Strike, Giorni, Tasso, (High + Low) / 2) > _
        Prezzo_Put Then
             High = (High + Low) / 2
             Else: Low = (High + Low) / 2
    End If
    Loop
    Put_Volatilità = (High + Low) / 2
Else
    Do While (High - Low) > 0.0001
    If Put_Europea(Prezzo, Strike, Giorni, Tasso, (High + Low) / 2, Dividendo) > _
        Prezzo_Put Then
             High = (High + Low) / 2
             Else: Low = (High + Low) / 2
    End If
    Loop
    Put_Volatilità = (High + Low) / 2
End If
End Function
Meno si rischia più si guadagna ...
Non connesso

carlolanzerotti

  • Messaggi: 79
  • Iscritto il: 10/10/2011, 13:55

Re: La cassetta degli attrezzi

Messaggio16/01/2012, 21:06

Domandina speciale, Antonio ... DOVE le copio quelle formule per farle funzionare ???

Con excel ho molto da imparare ...

Grazie
Non connesso
Avatar utente

AZ13

  • Messaggi: 42818
  • Iscritto il: 28/09/2011, 22:27

Re: La cassetta degli attrezzi

Messaggio16/01/2012, 21:16

carlolanzerotti ha scritto:Domandina speciale, Antonio ... DOVE le copio quelle formule per farle funzionare ???

Con excel ho molto da imparare ...

Grazie


Alt F11 e passi da Excel all’ambiente di programmazione VBA.
Clicchi sulla voce inserisci e selezioni Modulo.
Non hai i permessi necessari per visualizzare i file allegati in questo messaggio.
Meno si rischia più si guadagna ...
Non connesso

livio

  • Messaggi: 50
  • Iscritto il: 07/01/2012, 17:46

Re: La cassetta degli attrezzi

Messaggio18/01/2012, 15:53

ciao Antonio, nei listati VB riportati c'è forse un errore di scrittura?
Nelle formule per il calcoloo di theta, gamma e vega c'è scritto "Normale (d1)", se eseguito mi da errore, devo sostutuire con "Application.NormSDist(d1)"?
Non connesso
Avatar utente

AZ13

  • Messaggi: 42818
  • Iscritto il: 28/09/2011, 22:27

Re: La cassetta degli attrezzi

Messaggio18/01/2012, 17:52

Manca questa funzione...

Codice: Seleziona tutto
Private Function Normale(z)
Normale = Exp(-0.5 * z ^ 2) / Sqr(2 * Application.Pi)
End Function
Meno si rischia più si guadagna ...
PrecedenteProssimo

Torna a Concetti di base



Chi c’è in linea

Visitano il forum: Nessuno e 10 ospiti

cron