Hallo!
Matrix? Tabelle?
Meinst Du so ein Modul? Rückgabe eines Type.
Public Type allstuff
dOne As Double
dTwo As Double
Deltacall As Double
Gamma As Double
Vega As Double
Theta As Double
End Type
Public Function mybs(stock, exercise, time, interest, sigma) As allstuff
mybs.dOne = dOne(stock, exercise, time, interest, sigma)
mybs.dTwo = dOne(stock, exercise, time, interest, sigma)
mybs.Deltacall = Deltacall(stock, exercise, time, interest, sigma)
mybs.Gamma = Gamma(stock, exercise, time, interest, sigma)
mybs.Vega = Vega(stock, exercise, time, interest, sigma)
mybs.Theta = Theta(stock, exercise, time, interest, sigma)
End Function
Private Function dOne(stock, exercise, time, interest, sigma) As Double
dOne = (Log(stock / exercise) + (interest + (sigma ^ 2) / 2) * time) / _
(sigma * time)
End Function
Private Function dTwo(stock, exercise, time, interest, sigma) As Double
dTwo = dOne(stock, exercise, time, interest, sigma) - sigma * Sqr(time)
End Function
Private Function Deltacall(stock, exercise, time, interest, sigma) As Double
Deltacall = Application.NormSDist(dOne(stock, exercise, time, interest, _
sigma))
End Function
Private Function normaldf(x) As Double
normaldf = Exp(-x ^ 2 / 2) / (Sqr(2 * 3.14159265))
End Function
private Function Gamma(stock, exercise, time, interest, sigma) As Double
Gamma = (normaldf(dOne(stock, exercise, time, interest, sigma))) / (stock * _
sigma * Sqr(time))
End Function
Private Function Vega(stock, exercise, time, interest, sigma) As Double
Vega = stock * normaldf(dOne(stock, exercise, time, interest, sigma)) * Sqr( _
time)
End Function
Private Function Theta(stock, exercise, time, interest, sigma) As Double
Theta = (-(stock * normaldf(dOne(stock, exercise, time, interest, sigma)) * _
sigma) / _
(2 * Sqr(time))) - interest * exercise * Exp(-interest * time) _
* Application.NormSDist(dTwo(stock, exercise, time, interest, sigma))
End Function Anwendung:
Dim allresults As allstuff
allresults = mybs(10, 5, 3, 2, 2)
Mfg Manfred
Beitrag wurde zuletzt am 03.05.11 um 18:59:03 editiert. |