首页 > 解决方案 > Power BI 中的计算时间加权回报

问题描述

我试图计算股票投资组合的时间加权回报。公式为:

时间加权回报

我有以下数据:

两只股票的数据

我将 Power Bi 中的 TWR(时间加权回报)计算为:

TWR = productx(tabel1;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,这是不正确的。

我想在每个日期对两只股票的总和(两只股票的收益率)/总和(两只股票的TWRD分母),这样我最终不会得到两行(每只股票一个),而是投资组合的每个日期都有一个共同的数字.

我用这样的度量计算了列 TWR denom/yield -1:twr denom/yield-1 = CALCULATE(1+sumx(tabel1;tabel1(yield)/sumx(tabel1;tabel1[TwrDenominator])))

我的 Power Bi 的结果

我该如何解决这个问题?

先感谢您!

标签: group-bypowerbimultiplication

解决方案


这是您的问题的一种解决方案,但它假定数据采用以下格式:

[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

希望这会有所帮助,否则让我知道我在哪里误解了你。

干杯,

奥斯卡


推荐阅读