Расчетное время взвешенного возврата в Power BI - PullRequest
0 голосов
/ 18 марта 2019

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

Time weigthed return

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

Data for two stocks

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

TWR = productx (tabl1; TWR denom / yield + 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])))

Results from my Power Bi

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

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

1 Ответ

0 голосов
/ 20 марта 2019

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

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

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

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

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 между всеми таблицами портфолио.

Calculated TWR

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

Приветствия

Оскар

...