Рассчитанный возврат веса времени в Power BI

#group-by #powerbi #multiplication

#сгруппировать по #powerbi #умножение

Вопрос:

Я пытаюсь рассчитать взвешенную доходность по времени для портфеля акций. Формула равна:

 Возврат веса времени

У меня есть следующие данные:

Данные для двух запасов

Я вычисляю TWR (возврат по времени в Power Bi как:

TWR = productx(tabel1; значение TWR / выход 1)

Отмеченные серым и синим поля представляют собой отдельные единичные запасы. Здесь вы видите, что TWR для серого запаса = 0,030561631, а для синего TWR = 0,012208719, что верно для периода с 09.03.19 по 13.03.19.

Моя проблема в том, что когда я пытаюсь рассчитать TWR для портфеля из двух акций, он принимает произведение og каждой строки. В оранжевом поле я рассчитал правильный результат в Excel. Но в Power BI он принимает произведение серых и синих запасов TWR: (0,0305661631 * 0,012208719) = 0,03143468, что неверно.

Я хочу суммировать (доходность для обеих акций) / sum (двумножитель для обеих акций) для обеих акций на каждую отдельную дату, так, чтобы в итоге получались не две строки (по одной для каждой акции), а общее число на каждую дату для портфеля.

Я вычислил столбец TWR denom / yield -1 в такой мере, как это: twr denom / yield-1 = ВЫЧИСЛИТЬ (1 sumx(tabel1;tabel1(yield) / sumx(tabel1;tabel1[TWR -знаменатель])))

Результаты моего Power Bi

Как я могу решить эту проблему?

Заранее благодарим вас!

Ответ №1:

Это одно из решений вашего вопроса, но оно предполагает, что данные представлены в следующем формате:

 [Date] | [Stock] | [TWR] | [Yield]
-----------------------------------
[d1]   | X       | 12355 | 236
[d1]   | y       | 23541 | 36
[d2] ... etc.
  

Т.е. дата не является уникальным значением в таблице, хотя имя date-stock будет.

Затем вы можете создать новую вычисляемую таблицу, используя следующий код:

 Portfolio_101 = 
CalculateTable(
    Summarize(
        DataTable;
        DataTable[Date];
        "Yield_over_TWR"; Sum(DataTable[Yield])/Sum(DataTable[TWR_den]) 1
    );
    Datatable[Stock] in {"Stock_Name_1"; "Stock_Name_2"}
)
  

Затем в новом Portfolio_101 создайте меру:

 Return_101 = 
Productx(
    Portfolio_101;
    Portfolio_101[Yield_over_TWR]
)-1
  

Если я использую ваши данные в следующей таблице, я создал три расчетные таблицы, по одной для каждой акции и третью (Portfolio_103) с двумя объединенными данными. Кроме того, у меня есть таблица календаря, которая имеет соотношение 1: 1 между всеми таблицами портфолио.

Вычисленное TWR

Надеюсь, это поможет, в противном случае дайте мне знать, где я вас неправильно понял.

Приветствия,

Оскар