我有一个投资组合突变数据集,希望将数据分为两组:“已售资产”和“未平仓头寸”。以下是具有所需结果的示例数据集。 & 谷歌表格中的示例。
股票代码 | 行动 | 购买日期 | 购买价格 | 分享 | 销售日期 | 售价 | 分享 |
---|---|---|---|---|---|---|---|
AAPL | 购买 | 2023 年 1 月 30 日 | $143.00 | 100 | |||
AAPL | 购买 | 2023 年 3 月 14 日 | $152.00 | 100 | |||
亚马逊 | 购买 | 2023 年 5 月 4 日 | $104.00 | 50 | |||
AAPL | 出售 | 2023 年 7 月 11 日 | 187.00 美元 | 200 | |||
WMT | 购买 | 2023 年 8 月 22 日 | $52.30 | 300 | |||
亚马逊 | 购买 | 2023年9月28日 | $124.00 | 20 | |||
AAPL | 购买 | 2023年10月25日 | $172.00 | 80 | |||
PG | 购买 | 2023 年 12 月 11 日 | $145.00 | 430 | |||
WMT | 出售 | 2024 年 2 月 28 日 | 59.50 美元 | 100 | |||
PG | 出售 | 2024 年 3 月 8 日 | $160.00 | 430 |
发生的情况是,人们可以开仓 (AAPL) 并在当年晚些时候平仓。在投资生涯的进一步发展中,苹果公司可能会被再次购买。平仓的仓位应显示在“已售资产”列表中。同时,新持仓会显示在“持仓”列表中。
股票代码 | 最后销售日期 | 利润/亏损 |
---|---|---|
AAPL | 2023 年 7 月 11 日 | $7,900.00 |
WMT | 2024 年 2 月 28 日 | $720.00 |
PG | 3/8/0202 | $6,450.00 |
股票代码 | 首次购买日期 | 未实现利润/损失 |
---|---|---|
亚马逊 | 2023 年 5 月 4 日 | $4,790.50 |
AAPL | 2023年10月25日 | $533.60 |
WMT | 2023 年 8 月 22 日 | $1,790.00 |
我尝试了各种方法,并将我的尝试添加到单独的表格中在谷歌表格中。我将每个唯一股票代码的份额相加,并与“=0”(已售资产)和“>0”(“未平仓头寸”)进行比较。当股票不像本例中的 AAPL 那样被重复买卖时,这种方法很有效。
我正在考虑通过某种方式将彩色行分组在一起并检索要在 2 个列表中显示的必要数据来解决此问题。
是否有公式/查询来创建所需的结果?没有脚本也可以吗?
我先谢谢你了!
这是您可以测试
Sold Assets
部分的一种方法:
=let(Σ,filter({A5:A,G5:I},G5:G),tick,unique(index(Σ,,1)), date,index(xlookup(tick,index(Σ,,1),index(Σ,,2),,,-1)), pl_,map(tick,lambda(Δ,
let(Ξ,sum(filter(index(Σ,,4),index(Σ,,1)=Δ)), Γ,sum(filter(index(Σ,,3)*index(Σ,,4),index(Σ,,1)=Δ)), Λ,filter({A5:A,D5:D,E5:E},A5:A=Δ,E5:E),
Γ-sum(map({0;scan(,index(Λ,,3),lambda(a,c,a+c))},vstack(index(Λ,,3),),vstack(index(Λ,,2),),lambda(x,y,z,ifs(x+y<=Ξ,y,isbetween(Ξ,x,x+y),Ξ-x,1,)*z)))))),
hstack(tick,date,pl_))