Расчетная доходность с взвешиванием по времени в Power BI

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

Возвращение с взвешиванием по времени

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

Данные для двух акций

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

TWR = productx (tabel1; TWR ден / доход + 1)

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

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

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

Я рассчитал номинал TWR / доход -1 в столбце следующим образом: twr denom / yield-1 = CALCULATE (1 + sumx (tabel1; tabel1 (yield) / sumx (tabel1; tabel1 [TwrDenominator])))

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

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

Заранее спасибо!


person Mads    schedule 18.03.2019    source источник


Ответы (1)


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

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

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

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

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

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

Ваше здоровье,

Оскар

person OscarLar    schedule 20.03.2019