Проблема с ковариационной матрицей через VBA - PullRequest
0 голосов
/ 09 июля 2019

Я пытаюсь написать функцию, которая возвращает ковариацию массива.Мне дают цены на акции 5 акций в порядке убывания от 2nd February 2017 до 8th July 2019.Я искал их арифметические результаты.Но после написания кода нажатие Ctrl + Shift + Ввод дает мне #VALUE.

Function VarCovArr(RNG As Range)
    Dim Arr()
    Dim OutputArr()
    Dim i As Long
    Dim j As Long
    Dim k As Long
    Dim ReturnArr()
    Dim WF As Object
    Dim TempArr()
    Dim TempArr2()

    Set WF = Application.WorksheetFunction
    Arr = RNG

   'Build Return Array
   '(1) Size of Array

    ReDim ReturnArr(LBound(Arr, 1) To UBound(Arr, 1) - 1, LBound(Arr, 2) To UBound(Arr, 2))

    For i = LBound(ReturnArr, 1) To UBound(ReturnArr, 1)
        For j = LBound(ReturnArr, 2) To UBound(ReturnArr, 2)
            ReturnArr = Arr(i + 1, j) / Arr(i, j) - 1
        Next j
    Next i

    ReDim OutputArr(1 To UBound(Arr, 2), 1 To UBound(Arr, 2))
    ReDim TempArr(1 To UBound(ReturnArr, 1), 1 To UBound(ReturnArr, 1))
    ReDim TempArr2(1 To UBound(ReturnArr, 1), 1 To UBound(ReturnArr, 1))

    For i = LBound(OutputArr, 1) To UBound(OutputArr, 1)
        For j = LBound(OutputArr, 2) To UBound(OutputArr, 2)
            For k = LBound(ReturnArr, 1) To UBound(ReturnArr, 2)
                TempArr(k) = ReturnArr(k, i)
                TempArr2(k) = ReturnArr(k, j)

                '(2) Store Covariance matrix
                OutputArr(i, j) = Application.WorksheetFunction.Covariance_S(TempArr, TempArr2)
            Next k
        Next j
    Next i

    VarCovArr = OutputArr
End Function
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...