我正在开发一个库存管理应用程序,这里是这样的场景:
-the用户通过以下信息输入购买的物品(物品Id、购买数量、购买价格、wind最低价格、购买日期)
在每个操作中,用户使用以下信息输入已售出的物品(物品Id、售出数量、wind的最终价格、交易日期),并且如果最终价格wind小于wind的最低价格,则每次操作我都会提醒用户
每一次操作,我都记录了一次风交易的收益(最终价格风-购买价格)
问题是:你可以在不同的时间以不同的价格购买相同的产品,然后我们就可以计算共同收益,
例如,如果我有以下情况
购买物品(t恤),10,25 20,25 23,10/08/2012购买物品(t恤),10,25 22,25 25,19/08/2012
在这种情况下,wind的操作我必须做什么,以恢复正确的购买价格和计算利润,并记录在销售表中的良好信息的文章?
发布于 2012-08-20 16:28:34
在金融领域,利润/亏损的计算通常(大多数情况下)是按照FIFO规则完成的。
也就是说:20美元买10美元,22美元卖5美元,21美元买5美元,23美元卖10美元,必须记录为
BUY 10 for $20 date1
BUY 5 for $21 date3和单独的
SELL 5 @ $22 date2
SELL 10 @ $23 date4现在,您要做的是根据FIFO规则将它们配对,并将中间投资组合写入数据库:
portfolios AFTER date
date1 10 profit/loss $0 avg-open $20
date2 5 profit/loss +$10 avg-open $20
date3 10 protit/loss +$10 avg-open $20.50
date4 0 profit/loss +$35 avg-open $0逐一操作:在date1之后,我们以20美元的平均开盘价买入。从date1到date2,我们卖出了一半的股票,赚取了5 * ($22 - $20 <- avg-open) = $10的利润,在那笔交易之后,还有5只证券的平均开盘价为20美元。
从date2到date3,我们增加了5只证券,利润/亏损保持不变,但平均开盘价上涨到20.5美元(20美元5只+21美元5只)。
最后,你把它们都卖了,利润率是10 * ($23 - $20.50) = $25加上之前的10美元,那就是35美元。
综上所述,您可以记录单个交易(BUY/SELL),然后动态计算投资组合、平均开盘价和盈亏。
或者,您可以将投资组合与到目前为止的利润/亏损和增量更新的平均开盘价一起存储。
我不建议两者都做(除非出于调试目的),因为这可能会给您带来数据级别的不一致,这是很糟糕的。如果您这样做了,选择其中一个表示为主,并(重新)计算另一个在不一致的情况下。
这只是个建议。
https://stackoverflow.com/questions/12033482
复制相似问题