This is copy of reddit post. Wiki example does not work for me or it's wrong
Let we have following transaction:
Income 100 EUR @ 1.0
Sell 50 EUR @ 1.1
Income 100 EUR @ 1.2
Sell 100 EUR @ 1.3
Now @ 1.4
If calculate everything in USD I expect to have balance
Assets.Cash 50 * 1.4 + 50 * 1.1 + 100 * 1.3 = 255 USD
Income 100 * 1 + 100 * 1.2 = 220 USD
Equity.Realized 50 * (1.1 - 1.0) + 50 * (1.3 - 1.0) + 50 * (1.3 - 1.2) = 25 USD
Equity.Unrealized 50 * (1.4 - 1.2) = 10 USD
I tried trading account according to wiki and results are unadequate
P 2022-01-01 EUR 1.0 USD
2022-01-01 Salary
Assets:Bank 100.00 EUR
Income:Salary
P 2022-01-02 EUR 1.1 USD
2022-01-02 Transaction 1
Assets:Bank -50.00 EUR
Equity:Trading:USD 50.00 EUR
Equity:Trading:EUR -55.00 USD
Assets:Bank 55.00 USD
P 2022-01-03 EUR 1.2 USD
2022-01-03 Salary
Assets:Bank 100.00 EUR
Income:Salary
P 2022-01-04 EUR 1.3 USD
2022-01-04 Transaction 1
Assets:Bank -100.00 EUR
Equity:Trading:USD 100.00 EUR
Equity:Trading:EUR -130.00 USD
Assets:Bank 130.00 USD
P 2022-01-05 EUR 1.4 USD
Income is not adequate
$ ledger bal -f trade.txt -X USD
255.00 USD Assets:Bank
25.00 USD Equity:Trading
-185.00 USD EUR
210.00 USD USD
-280.00 USD Income:Salary
--------------------
0
If I put FIFO logic manually
P 2022-01-01 EUR 1.0 USD
2022-01-01 Salary
Assets:Bank 100.00 EUR @ 1.0 USD
Income:Salary
P 2022-01-02 EUR 1.1 USD
2022-01-02 Transaction 1
Assets:Bank -50.00 EUR {1.0 USD} @ 1.1 USD
Assets:Bank 55.00 USD
Equity:Realized Gains -5.00 USD
P 2022-01-03 EUR 1.2 USD
2022-01-03 Salary
Assets:Bank 100.00 EUR @ 1.2 USD
Income:Salary
P 2022-01-04 EUR 1.3 USD
2022-01-04 Transaction 1
Assets:Bank -50.00 EUR {1.0 USD} @ 1.3 USD
Assets:Bank -50.00 EUR {1.2 USD} @ 1.3 USD
Assets:Bank 130.00 USD
Equity:Realized Gains -20.00 USD
P 2022-01-05 EUR 1.4 USD
balance is correct
$ ledger bal -f trade2.txt -X USD
255.00 USD Assets:Bank
-25.00 USD Equity:Realized Gains
-220.00 USD Income:Salary
--------------------
10.00 USD
But I have to manually keep track of every income transaction.
Quiestion: is there a better way to do it or I miss something?