Я занимаюсь разработкой финансового приложения. Цель состоит в том, чтобы вычислить различную статистику риска портфеля. Первая основная проблема заключается в следующем: у меня есть набор данных с тысячами строк, которые имеют следующую структуру
Instrument Factor Weight
A F1 0.149386064
A F2 0.282444926
A F300 0.66216264
B F1 0.501194572
B F2 0.037874843
B F300 0.939051411
Для каждого инструмента в кадре данных мне нужно рассчитать систематический риск, используя матричное умножение умножения весов инструментов наковариационная матрица, которая представлена BlockMatrix.
Фактический расчет не сложен, и я выполнил эту часть. Мой вопрос заключается в том, какой самый эффективный способ Scala / Spark для расчета группы записей для каждого инструмента.
В основном мне нужно что-то, что может быть выражено как
instrument_df.groupBy("Instrument").agg(CalculateRisk)
, где CalculateRiskимеет ссылку на ковариационную матрицу и принимает строки весов для каждого инструмента