Моделирование «n» шагов «m» путей моделирования данных с использованием VBA - PullRequest
0 голосов
/ 07 февраля 2020

Я достаточно хорошо знаю Python и знаю, как имитировать 'n' step, 'm' данные пути, используя Python. Пожалуйста, смотрите следующий код

import numpy as np
import math
import matplotlib.pyplot as plt
from scipy.stats import norm

#Define Variables
S = 100 #starting data
T = 252 #Number of trading days
mu = 0.2309 #Return
vol = 0.4259 #Volatility
m=1000
#choose number of runs to simulate - I have chosen 1000
for i in range(m):
    #create list of daily returns using random normal distribution
    daily_returns=np.random.normal(mu/T,vol/math.sqrt(T),T)+1

    #set starting price and create price series generated by above random daily returns
    price_list = [S]

    for x in daily_returns:
        price_list.append(price_list[-1]*x)

    #plot data from each individual run which we will plot at the end
    plt.plot(price_list)

#show the plot of multiple price series created above
plt.show()

Я хочу сделать это в VBA и не знаю, как выполнить sh. Пожалуйста, помогите.

1 Ответ

0 голосов
/ 07 февраля 2020

Вы можете использовать Norm_Dist для нормального распределения в VBA, которое будет работать как np.random.normal.

Dim dblNorm_Dist As Double
dblNorm_Dist = WorksheetFunction.Norm_Dist(Arg1:= ,Arg2:= ,Arg3:= ,Arg4:= )
Arguments:

Arg1: Double
Arg2: Mean - The arithmetic mean of the distribution.
Arg3: Standard_dev - The standard deviation of the distribution.
Arg4: "Cumulative - A logical value that determines the form of the function. If cumulative is TRUE

Поскольку вышеупомянутый метод не дает возможности упомянуть размер, чтобы вы могли его вызвать в l oop и затем вернуть массив:

For i=1 to T 
   RandomArray=WorksheetFunction.Norm_Dist(Arg2:=mu / T, Arg3:=vol / Sqr(T))
Next i
...