在学习PowerBI的过程中,我正在构建一个小型股票投资组合分析应用程序。
PBIX - 这里
我想制作一个随时间变化的投资组合估值折线图。
我的表中
StockHistoricData1
有每日粒度的股票价格。 (如果数据丢失,我们在计算投资组合价值时应该忽略该股票)
这是一个小样本 -
股票报价表 | 开始日期 | 结束日期 | 日期 | 系列 | 打开 | 高 | 低 | 上一篇。关闭 | ltp | 关闭 | vwap | 52宽高 | 52W长 | 音量 |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
VBL | 19-01-2023 | 18-01-2024 | 18-01-2024 | 情商 | 1244 | 1249.55 | 1196.4 | 1248.5 | 1229.75 | 1230.15 | 1227.71 | 1747 | 755 | 1854390 |
VBL | 19-01-2023 | 18-01-2024 | 17-01-2024 | 情商 | 1256 | 1263.6 | 1230.1 | 1266.1 | 1249.25 | 1248.5 | 1244.89 | 1747 | 755 | 2159125 |
VBL | 19-01-2023 | 18-01-2024 | 16-01-2024 | 情商 | 1273.8 | 1276 | 1256.05 | 1271.7 | 1266 | 1266.1 | 1267.45 | 1747 | 755 | 1320740 |
SBIN | 19-01-2023 | 18-01-2024 | 18-01-2024 | 情商 | 625.8 | 633.45 | 619.05 | 626 | 628.5 | 628.3 | 627.46 | 660.4 | 499.35 | 14695436 |
SBIN | 19-01-2023 | 18-01-2024 | 17-01-2024 | 情商 | 624 | 636.8 | 623 | 636.9 | 626.45 | 626 | 628.6 | 660.4 | 499.35 | 30016308 |
SBIN | 19-01-2023 | 18-01-2024 | 16-01-2024 | 情商 | 640 | 644.9 | 633.45 | 640.1 | 637.55 | 636.9 | 639.72 | 660.4 | 499.35 | 15025543 |
阿达尼港口 | 19-01-2023 | 18-01-2024 | 18-01-2024 | 情商 | 1171.05 | 1184.3 | 1143.45 | 1166.85 | 1155 | 1154.05 | 1159.02 | 1229.9 | 395.1 | 5918594 |
阿达尼港口 | 19-01-2023 | 18-01-2024 | 17-01-2024 | 情商 | 1180 | 1204.7 | 1159.45 | 1193.35 | 1169.9 | 1166.85 | 1180.1 | 1229.9 | 395.1 | 5268593 |
阿达尼港口 | 19-01-2023 | 18-01-2024 | 16-01-2024 | 情商 | 1203.6 | 1212 | 1186.8 | 1203.1 | 1194.5 | 1193.35 | 1198.1 | 1229.9 | 395.1 | 3173587 |
我的当前交易包括表中我拥有的股票
Tradebook_1
这是一个示例 -
符号 | ISIN | 交易日期 | 交流 | 细分 | 系列 | 交易类型 | 拍卖 | 数量 | 价格 | 交易ID | 订单号 | 订单执行时间 | 当前价格 |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
艾达 | INE202E01016 | 17-01-2024 | 疯牛病 | 情商 | B | 购买 | 错误 | 80 | 122.6 | 18654600 | 1.70547E+18 | 17-01-2024 13.27 | 122.7 |
POLYCAB | INE455K01017 | 2024年9月1日 | 疯牛病 | 情商 | A | 购买 | 错误 | 2 | 4880 | 193925800 | 1.70479E+18 | 2024年9月1日15.25 | 4440 |
艾达 | INE202E01016 | 2023年12月28日 | 疯牛病 | 情商 | B | 卖 | 错误 | 150 | 96.76 | 12881600 | 1.70374E+18 | 2023年12月28日11点 | 122.7 |
艾达 | INE202E01016 | 2023年12月27日 | NSE | 情商 | 情商 | 购买 | 错误 | 50 | 99.75 | 27742304 | 1.1E+15 | 2023年12月27日15.16 | 122.7 |
POLYCAB | INE455K01017 | 2023年12月26日 | NSE | 情商 | 情商 | 购买 | 错误 | 2 | 5395.55 | 46925953 | 1.2E+15 | 2023年12月26日15.19 | 4440 |
POLYCAB | INE455K01017 | 2023年12月22日 | 疯牛病 | 情商 | A | 卖 | 错误 | 3 | 5322.35 | 114766100 | 1.70323E+18 | 2023年12月22日13.44 | 4440 |
有多个
buy
和 sell
操作。因此,投资组合价值应相应增加和减少。
如何创建一种衡量标准,根据 StockHistoricData1
中的日期查询价格,并考虑到 Tradebook
中完成的交易来计算相应的投资组合价值
我尝试使用
RELATED
按股票代码获取相应的数据,但在考虑每日股票价格时失败了。
尝试以下措施:
Cumlative Quantity =
var maxDate = MAX('DateTable'[Date])
var cTbl = CALCULATETABLE('Tradebook_1', REMOVEFILTERS('DateTable'), 'Tradebook_1'[Trade Date] <= maxDate)
var buys = CALCULATE(SUM('Tradebook_1'[Quantity]), cTbl, 'Tradebook_1'[Trade Type] = "buy")
var sells = CALCULATE(SUM('Tradebook_1'[Quantity]), cTbl, 'Tradebook_1'[Trade Type] = "sell")
return buys - sells
Portfolio Value =
var maxDate = MAX('DateTable'[Date])
return
CALCULATE(
SUMX(
'StockHistoricData1',
(
var thisSymbol = [StockQuoteTable]
var thisPrice = [close]
var thisQty = [Cumlative Quantity]('Tradebook_1'[Symbol] = thisSymbol)
return thisPrice * thisQty
)
),
'StockHistoricData1'[Date] = maxDate
)
备注:
Tradebook_1
中,您似乎缺少历史数据。例如,符号 VPRPL
的净数量为 -160(卖出量多于买入量)。因此,您将因此获得负投资组合价值。