On Wed, Jun 25, 2014 at 11:14 AM, Martin Blais <[email protected]> wrote:
> On Wed, Jun 25, 2014 at 1:08 AM, Rick F <[email protected]> wrote: > >> "Allowing the cost to show up in >> >> both places would break the accounting equation; this transaction must >> balance." >> >> >> So I've been thinking about this and I think that is the fundamental >> problem. Technically, commission (at least in the U.S.) isn't an expense, >> it's an asset. It sounds strange, but think about it. In the U.S., the >> commission counts toward the cost basis and the cost basis is recorded with >> the asset. It's the whole depreciate vs. expense issue in accounting. >> >> Commission is definitely not an asset. > I think I see what you mean though, and I think what you mean is this > (please correct me if I'm wrong): > > 2014-06-25 * "Buying into a position" > Assets:Investments:Cash -1009.95 USD > Assets:Investments:Stock 10 STOCK {100 USD} > Expenses:Commissions 9.95 USD > > 2014-06-25 * "Cost basis adjustment for commission" > Assets:Investments:Stock -10 STOCK {100 USD} > Assets:Investments:Stock 10 STOCK {100.995 USD} > Income:Investments:Rebates -9.95 USD > > Now, the way that I carried out the cost basis adjustment above looks a > bit inconvenient: remove all shares and replace them by new ones at the > adjusted cost. This is because it is just what is supported in > Beancount/Ledger right now. In the example above, I use a "rebate" account > to absorb the cost adjustment: you would _not_ declare this as taxable > income, it's just there for balancing the transaction. > > 2014-08-04 * "Selling haf of my position" > Assets:Investments:Stock -5 STOCK {100.995 USD} > Assets:Investments:Cash 540.05 USD > Expenses:Commissions 9.95 USD > Income:Investments:Gains -35.075 USD > > On the sale you don't have to make an adjustment, because the shares have > been converted to cash. > Actually, I screwed up a bit in the sell example above, sorry about that. You would _also_ have to make an adjustment to the sale side, but you would adjust the gains there. Like this (tested, this time): 2014-01-01 open Assets:Investments:Cash 2014-01-01 open Assets:Investments:Stock 2014-01-01 open Expenses:Commissions 2014-01-01 open Income:Investments:Rebates 2014-01-01 open Income:Investments:Gains 2014-06-25 * "Buying into a position" Assets:Investments:Cash -1009.95 USD Assets:Investments:Stock 10 STOCK {100 USD} Expenses:Commissions 9.95 USD 2014-06-25 * "Cost basis adjustment for commission" Assets:Investments:Stock -10 STOCK {100 USD} Assets:Investments:Stock 10 STOCK {100.995 USD} Income:Investments:Rebates -9.95 USD 2014-08-04 * "Selling half of my position" Assets:Investments:Stock -5 STOCK {100.995 USD} Assets:Investments:Cash 540.05 USD Expenses:Commissions 9.95 USD Income:Investments:Gains 2014-08-04 * "Cost basis adjustment for commission" Income:Investments:Rebates -9.95 USD Income:Investments:Gains Resulting trial balance from Beancount: |-- Assets | `-- Investments | |-- Cash -469.90 USD | `-- Stock 504.98 USD |-- Expenses | `-- Commissions 19.90 USD `-- Income `-- Investments |-- Gains -35.08 USD `-- Rebates -19.90 USD The method I suggest in the document just does the adjustment transaction in the same transaction as the sale. They're equivalent. What I like about your suggestion is the idea of making cost basis adjustments simpler. Maybe something like this could be implemented eventually: 2014-06-25 * "Cost basis adjustment for commission" Assets:Investments:Stock 10 STOCK {100 USD -> 100.995 USD} Income:Investments:Rebates -9.95 USD Or even better, without having to specify the merged amount! 2014-06-25 * "Cost basis adjustment for commission" Assets:Investments:Stock -10 STOCK {100 USD} ; disambiguate Assets:Investments:Stock 10 STOCK {} ; let system auto-fill Income:Investments:Rebates -9.95 USD -- --- You received this message because you are subscribed to the Google Groups "Ledger" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. For more options, visit https://groups.google.com/d/optout.
