Как отладить переполнение Square root в VBA (Ошибка в MacOS v.16.36) - PullRequest
0 голосов
/ 29 апреля 2020

Я - ладья ie VBA, у меня проблема с использованием sqr () в VBA. Всякий раз, когда я использую функцию Sqr () в VBA, в строке SigSqrdt = sigma * Sqr (dt) появляется сообщение «Ошибка во время выполнения» 6 «Переполнение». И я пытаюсь смоделировать только броуновское движение.

Sub Simulating_Geometric_Brownian_Motion()
Dim T, S, mu, sigma, dt, SigSqrdt, LogS, drift, i, N
T = InputBox("Enter the length of the time period (T)")
N = InputBox("Enter the number of periods (N)")
S = InputBox("Enter the initial stock price (S)")
mu = InputBox("Enter the expected rate of return (mu)")
sigma = InputBox("Enter the volatility (sigma)")
dt = T / N
SigSqrdt = sigma * Sqr(dt)
drift = (mu - 0.5 * sigma * sigma) * dt
LogS = Log(S)
ActiveCell.Value = "Time"
ActiveCell.Offset(0, 1) = "stock price"
ActiveCell.Offset(1, 0) = 0  ' beginning time
ActiveCell.Offset(1, 1) = S 'beginning stock price
For i = 1 To N
ActiveCell.Offset(i + 1, 0) = i * dt
LogS = LogS + SigSqrdt * RandN()
ActiveCell.Offset(i + 1, 1) = Exp(LogS)
Next i
End Sub

Function RandN()
RandN = Application.NormSInv(Rnd())
End Function

Пример ввода:

T=1000, N=1000, S=10, mu=10, sigma=1
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...