这是我的模型的简化版本:
我有几个基金和几个证券的每日盈亏(损益)数据。计算回报率很容易 - 它是P / L除以开盘AUM(管理资产)。但每个月由于投资者的贡献,资产管理规模发生重大变化。因此,要获得YTD回报%,我需要计算公式为的累积回报(参见here):
YtdReturn =
PRODUCTX ( MonthlyReturnTable, DIVIDE ( MonthlyReturn, OpeningAUM ) +1 ) -1
困难在于我的盈亏处于每日水平。我成功地创造了这个:
CompoundReturn:=
PRODUCTX (
ADDCOLUMNS (
VALUES ( tblDates[MonthYearNumber] ),
"PnL Total1", CALCULATE ( SUM ( PnL[TradingPnL] ) + SUM ( PnL[InterestDividendsPnL] ) ),
"Month_Opening_AUM1", CALCULATE ( VALUES ( Daily_AUM[MonthOpeningAUM] ) )
),
DIVIDE ( [PnL Total1], [Month_Opening_AUM1] ) + 1
)
- 1
这很有效:
但是,我希望在正在运行的YTD基础上执行此操作。我在设置"内部"时遇到了问题。表到YTD。我尝试用VALUES()
围绕CALCULATETABLE()
来过滤YTD,但是没有效果:
CompoundReturn :=
PRODUCTX (
ADDCOLUMNS (
CALCULATETABLE (
VALUES ( tblDates[MonthYearNumber] ),
DATESYTD ( tblDates[Date] )
),
"PnL Total1", CALCULATE ( SUM ( PnL[TradingPnL] ) + SUM ( PnL[InterestDividendsPnL] ) ),
"Month_Opening_AUM1", CALCULATE ( VALUES ( Daily_AUM[MonthOpeningAUM] ) )
),
DIVIDE ( [PnL Total1], [Month_Opening_AUM1] ) + 1
)
- 1
Excel中的结果不是运行返回,而是个人:
有什么想法吗?谢谢!
注意:所有使用daxformatter.com
格式化的代码答案 0 :(得分:0)
在朋友的帮助下计算出来。我需要将CALCULATETABLE
放在ADDCOLUMNS
之外:
CompoundReturn :=
PRODUCTX (
CALCULATETABLE (
ADDCOLUMNS (
VALUES ( tblDates[MonthYearNumber] ),
"PnL Total1", CALCULATE ( SUM ( PnL[TradingPnL] ) + SUM ( PnL[InterestDividendsPnL] ) ),
"Month_Opening_AUM1", CALCULATE ( VALUES ( Daily_AUM[MonthOpeningAUM] ) )
),
DATESYTD ( tblDates[Date] )
),
DIVIDE ( [PnL Total1], [Month_Opening_AUM1] ) + 1
)
- 1