PowerBI:基于StockHistoricData1和Tradebook_1制作投资组合价值折线图
PowerBI 投资组合估值度量值实现方案
核心思路
要计算指定日期的投资组合价值,需分两步:先算出该日期各股票的持仓数量,再乘以当日股价(无股价则忽略),最后求和。RELATED函数失效是因为它只能返回单值,而单只股票对应多日股价,无法直接关联,需用CALCULATE配合筛选条件获取当日股价。
步骤1:计算单股票持仓数量(辅助度量值)
单股票持仓量 = VAR 当前日期 = MAX('StockHistoricData1'[Date]) RETURN SUMX( VALUES(Tradebook_1[StockCode]), CALCULATE( SUM(Tradebook_1[Quantity]) * IF(Tradebook_1[Operation] = "buy", 1, -1), Tradebook_1[TradeDate] <= 当前日期 ) )
步骤2:计算投资组合总价值(最终度量值)
投资组合价值 = VAR 当前日期 = MAX('StockHistoricData1'[Date]) RETURN SUMX( VALUES(Tradebook_1[StockCode]), VAR 持仓量 = CALCULATE( SUM(Tradebook_1[Quantity]) * IF(Tradebook_1[Operation] = "buy", 1, -1), Tradebook_1[TradeDate] <= 当前日期 ) VAR 当日股价 = CALCULATE( MAX(StockHistoricData1[ClosePrice]), -- 替换为你的实际股价字段,如收盘价/开盘价 StockHistoricData1[Date] = 当前日期, StockHistoricData1[StockCode] = EARLIER(Tradebook_1[StockCode]) ) RETURN IF(NOT ISBLANK(当日股价), 持仓量 * 当日股价, 0) )
关键说明
- 表关系检查:确保
Tradebook_1与StockHistoricData1通过StockCode字段建立关联(多对多或一对多均可,只要股票代码匹配)。 - 日期表优化:建议新增独立日期表并与
StockHistoricData1的Date字段关联,这样折线图的时间轴会更连续,不会因某股缺数据导致日期断档。 - 字段适配:将代码中的
ClosePrice替换为你实际使用的股价字段,Operation的判断逻辑需与交易记录中的取值一致(如交易记录用"买入"/"卖出",则修改IF条件)。 - 缺失股价处理:
IF(NOT ISBLANK(当日股价)...会自动忽略当日无股价的股票,符合需求。
内容的提问来源于Stack Exchange,提问作者Joker
相关产品推荐
相关产品推荐

