求对应累计收益804.97与有效收益15%的DAX表达式
DAX 计算累计收益与有效收益率
问题背景
给定包含Date、Funds(当日投入资金)、Returns(当日收益率)的表格数据,需计算最终累计收益(目标结果:804.97)及有效收益率(目标结果:15%)。
数据验证
先手动验证计算逻辑,确保结果匹配:
- 总投入:100+100+200+200+100=700
- 每日资产变化:
- 第1日:100*(1+0.1)=110
- 第2日:(110+100)*(1-0.05)=199.5
- 第3日:(199.5+200)*1.2=479.4
- 第4日:(479.4+200)*1.1=747.34
- 第5日:(747.34+100)*0.95=804.97
- 有效收益率:(804.97-700)/700≈15%
DAX 表达式
1. 累计收益度量值
累计收益 = VAR 按日期分组 = ADDCOLUMNS( SUMMARIZE('你的表名', '你的表名'[Date]), "@当日投入", CALCULATE(MAX('你的表名'[Funds])), "@当日收益", CALCULATE(MAX('你的表名'[Returns])) ) VAR 累计资产计算 = SUMX( 按日期分组, VAR 当前日期 = [Date] VAR 前期资产 = CALCULATE( [累计收益], FILTER(ALL('你的表名'), '你的表名'[Date] < 当前日期) ) RETURN IF( 当前日期 = MIN('你的表名'[Date]), [@当日投入] * (1 + [@当日收益]), (前期资产 + [@当日投入]) * (1 + [@当日收益]) ) ) RETURN ROUND(累计资产计算, 2)
- 逻辑说明:先按日期分组提取每日投入和收益,再通过迭代计算每日资产——首日直接用投入乘收益系数,后续日期用前期资产加当日投入再乘收益系数,最后保留两位小数。
2. 有效收益率度量值
有效收益率 = VAR 总投入 = SUM('你的表名'[Funds]) VAR 最终资产 = [累计收益] RETURN ROUND((最终资产 - 总投入) / 总投入, 4) * 100 & "%"
- 逻辑说明:用最终资产减去总投入得到总盈利,再除以总投入得到收益率,保留两位百分比后格式化输出。
注意事项
- 将表达式中的
你的表名替换为实际数据表名称。 - 确保
Date字段是连续且无重复的日期值(若有重复需先做分组处理)。
内容的提问来源于stack exchange,提问作者Arjun
相关产品推荐
相关产品推荐

