On Wed, May 27, 2020 at 3:48 PM James Cook <[email protected]> wrote:
> Disclaimer: If I were a practical person, the below would be a
> non-issue because I would simply track my income in currency and leave
> it at that. Please assume at least part of my motivation is just
> having fun tracking the world the way I see it, and feel free to skip
> this post if you don't feel like indulging me.
>
> Hi list,
>
> The problem: Part of my income is in stock (call it ACME). The way I
> see it, stock simply goes from my income account to my brokerage
> account. The way my tax authority sees it, there's some currency
> involved. I'd like to track my income both ways.
>
> Here's my point of view:
>
> 2000-01-01 * "Stock is granted"
> Income:Stock:Grant -1 ACME
> Income:Stock:Vesting 1 ACME
>
This is strange, for two reasons:
- You're booking the grant as shares, while you only received a promise of
shares. For that reason I suggest another commodity name. I use ACME.UNVEST.
- You're accumulating them in an Income account. The open and close clauses
of the query language don't treat income accounts like asset accounts.
> 2001-01-01 * "A year later, I get the stock"
> Income:Stock:Vesting -1 ACME
> Assets:Brokerage 1 ACME
>
> This is nice because I can make sure all my stock grant and vesting
> events are accounted for. It's also the way I prefer to think about
> it.
>
This is also incorrect because when your shares vest, they vest at a
particular cost.
You should include the cost basis on that second posting.
>
> But then tax season comes, and it would have been more convenient if
> I'd written something like this instead:
>
> 2001-01-01 * "Income is in currency, silly"
> Income:Stock-as-cad -100 CAD
> Assets:Brokerage 1 ACME
> Equity:Trade
>
> This would let me compare my income to my tax documents in my local
> currency CAD to make sure they match up.
>
If you declare the cost, it'll for you to balance it that way.
>
> Ideally, I'd like to track both points of view. Has anyone else
> thought about this?
>
I use another commodity which has a price of zero and keep the unvested
shares in an Assets account.
ACME.UNVEST, or ACME.GRANT or some other name you like
ACME (at cost)
>
> Here's a sort of half-baked solution I'm thinking of using to combine both:
>
> 2000-01-01 * "Stock is granted"
> Income:Stock:Grant -1 ACME
> Income:Stock:Vesting 1 ACME
>
> 2001-01-01 * "A year later, I get the stock" ^vest-2001-01-01
> Income:Stock:Vesting -1 ACME
> Assets:Brokerage 1 ACME
>
> 2001-01-01 * "The tax authority sees it differently" ^vest-2001-01-01
> Equity:Adjust-for-tax:Income 1 ACME
> Equity:Adjust-for-tax:Income -100 CAD
> Equity:Adjust-for-tax:Trade
>
Urg... avoid using Equity accounts
Do this instead:
2000-01-01 * "Stock is granted"
Income:Stock:Grants -32 ACME.GRANT
Assets:Stock:Grants:C123456 32 ACME.GRANT
;; Note the dedicated account to hold unvested units of a particular grant.
;; This way you can know when the grant has completed vesting.
;; You can also book a price of "unvested dollars" so you'll see the total
;; unvested amount in those units on your balance sheet.
2000-01-01 price ACME.GRANT 123.00 CAD.UNVESTED
2001-01-01 * "A year later, I get the stock" ^vest-2001-01-01
Assets:Stock:Grants:C123456 -2 ACME.GRANT
Expenses:Grants:Vested 2 ACME.GRANT
Income:Stock:Vesting -262.00 CAD
Assets:Brokerage 2 ACME {131.00 CAD}
;; Income:Stock:Grants tracks how many shares were granted
;; Assets:Stock:Grants:C123456 tracks the remaining unvested shares in your
gtrant
;; Expenses:Grants:Vested tracks how many shares were vested
;; Income:Stock:Vesting tracks the amount (in dollars) of vesting, to be
reported as ordinary income
;; Assets:Brokerage tracks your shares, at cost
> To compute my income from a tax point of view, I can add together
> Income and Equity:Adjust-for-tax:Income and get -100 CAD.
>
> It would be nice if I could get beancount to enforce that the
> "Equity:Adjust-for-tax:Income 1 ACME" split exactly balances the
> "Income:Stock:Vesting -1 ACME" split to catch mistakes. I think I
> could do something like as follows:
>
> enforce_internally_balanced Income:Stock:Vesting
> Equity:Adjust-for-tax:Income:Vesting
> enforce_internally_balanced Equity:Adjust-for-tax
>
> 2001-01-01 * "A year later, I get the stock"
> Income:Stock:Vesting -1 ACME
> Assets:Brokerage 1 ACME
> Equity:Adjust-for-tax:Income:Vesting 1 ACME
> Equity:Adjust-for-tax:Income -100 CAD
> Equity:Adjust-for-tax:Trade
>
> where "enforce_internally_balanced" would be directive (defined by a
> new plugin) that enforces that every transaction is balanced within
> the specified set of accounts.
>
> I think something along these lines will work for me, but it feels
> like a hack. I wonder if there is something better I could be doing.
>
>
See above
> James
>
> --
> You received this message because you are subscribed to the Google Groups
> "Beancount" group.
> To unsubscribe from this group and stop receiving emails from it, send an
> email to [email protected].
> To view this discussion on the web visit
> https://groups.google.com/d/msgid/beancount/CAHpmPOApBb6GyZaiu4fRYVXH%2BVxexnbE8ACLC3pdpTo5E8xJ3A%40mail.gmail.com
> .
>
--
You received this message because you are subscribed to the Google Groups
"Beancount" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
To view this discussion on the web visit
https://groups.google.com/d/msgid/beancount/CAK21%2BhNeKFdYNZjY9yOtEiWGbc%3DGrbtMZMkJTKYzA_Srd8j0gw%40mail.gmail.com.