財務では、利益/損失の計算は常に(ほとんどの場合)FIFOルールを使用して行われます。
つまり、10ドルで20ドル、5ドルで22ドル、5ドルで21ドル、10ドルで23ドル、次のように記録する必要があります。
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
オペレーションを1つずつ:date1
平均オープン価格20ドルで購入した後。からdate1
、date2
私たちは株式の半分を売り、利益を上げ、5 * ($22 - $20 <- avg-open) = $10
その取引の後、平均オープン価格が$20の5つの証券が残っています。
から5証券date2
までdate3
の在庫があり、利益/損失は同じままですが、平均始値は$ 20.50($20の場合は5+ $ 21の場合は5)になります。
10 * ($23 - $20.50) = $25
そして最後に、あなたはそれらすべてを以前からのプラス10ドルの利益率で販売します。それはあなたに35ドルを与えます。
要約すると、これをまとめると、単一のトランザクション(BUY
/ SELL
)を記録してから、ポートフォリオ、平均始値、およびその場での損益を計算できます。
または、これまでの利益/損失および増分更新された平均始値とともにポートフォリオを保存できます。
(デバッグ目的を除いて)両方を実行することはお勧めしません。データレベルで不整合が発生する可能性があり、これは厄介です。その場合は、表現の1つをマスターとして選択し、矛盾がある場合はもう1つを(再)計算します。
ただの提案。