Forum Discussion

KEIRA's avatar
KEIRA
Frequent Visitor
3 years ago
Solved

Matrix Multiplication

Hello everyone, I really need your help. I have two matrices and I want to multiply the matrices with each other. I found a way to do it, as you can see in the picture:               ...
  • AlexisOlson's avatar
    AlexisOlson
    3 years ago

    I think I've got it and it's simpler than I initially anticipated.

    Matrix Product = 
    VAR _C1 = SELECTEDVALUE ( H1_CurrencyList[C1] )
    VAR _C2 = SELECTEDVALUE ( H2_CurrencyList[C2] )
    VAR _Matrix_ =
        ADDCOLUMNS (
            ALL ( H1_CurrencyList[C1] ),
            "Row_1",
                VAR _C = H1_CurrencyList[C1]
                RETURN
                    CALCULATE (
                        [Covariance],
                        H1_CurrencyList[C1] = _C1,
                        H2_CurrencyList[C2] = _C
                    ),
            "Col_2",
                VAR _C = H1_CurrencyList[C1]
                RETURN
                    CALCULATE (
                        [Cross Weights],
                        H1_CurrencyList[C1] = _C,
                        H2_CurrencyList[C2] = _C2
                    )
        )
    RETURN
        SUMX ( _Matrix_, [Row_1] * [Col_2] )

    Having a square matrix that's a cross product of a list of currencies with itself gives a nice solution that only requires one evaluation each of [Covariance] and [Cross Weights] per currency per cell in the result matrix (each of the N^2 result cells requires 2N measure calls for N currencies).

     

    This is simpler than my comment on the gallery post I mentioned previously since I don't need to load the entire matrices, just the relevant row & column from each one. The main difficulty there is just setting up the indexing and filtering for the parts needed. The key logic in both is the same sum product.