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
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.
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.
Ideally, I'd like to track both points of view. Has anyone else
thought about this?
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
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.
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 beancount+...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/beancount/CAHpmPOApBb6GyZaiu4fRYVXH%2BVxexnbE8ACLC3pdpTo5E8xJ3A%40mail.gmail.com.
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
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.
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
Oct 6, 2020 04:58:42 James Cook <jc...@cs.berkeley.edu>:
--
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 beancount+...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/beancount/CAHpmPOCju25AXgZZwTDLYdVg0YSy%2B175X5mCginkZsda9Y6Wmw%40mail.gmail.com.
On Tue, 24 Nov 2020 at 17:50, Manuel Amador (Rudd-O) <rud...@rudd-o.com> wrote:
> You need different symbols for unvested and vested stock because they are literally not the same objects.
This seems like a question of how you want to look at it. I like to
imagine the ACME stocks are first created in a "vesting" pool I don't
have access to, and pass into my account from there X years later. I'm
sure there are other ways to think of it.
To view this discussion on the web visit https://groups.google.com/d/msgid/beancount/CAHpmPODs_WDjCBDGO%3DJS5B8AdDi0gTxKCg75QOu%3Dpo7DPZnNFw%40mail.gmail.com.
On Wed, Nov 25, 2020 at 6:23 PM James Cook <jc...@cs.berkeley.edu> wrote:On Tue, 24 Nov 2020 at 17:50, Manuel Amador (Rudd-O) <rud...@rudd-o.com> wrote:
> You need different symbols for unvested and vested stock because they are literally not the same objects.
This seems like a question of how you want to look at it. I like to
imagine the ACME stocks are first created in a "vesting" pool I don't
have access to, and pass into my account from there X years later. I'm
sure there are other ways to think of it.Given that this type of arrangement is on a rolling basis - you will get more grants over time, with straddling periods - you're pretty much guaranteed at some point or other to leave some on the table (do you hold a corresponding liability for this just in case?). Moreover, the value of these shares really hasn't been taxed yet, so it needs to be discounted as much, because when you do receive it, it'll be income and thus taxes. Finally, you're accounting for income coming in from... an asset account, and to me, that's weird. These are good arguments against that approach. It's more rational to think of those as not really on your balance sheet yet, and to (ac)count it using some other unit.
But worry not, Beancount will allow you to do it the way you want.
To be clear, I feel this is no longer a problem for me. I wrote a plugin that does things the way I like, whether or not it's the most sensible.
Awesome! If you can share the code, I'd love to take a look.
Still, I'm curious what you mean. What you're saying sounds a bit like the following transaction, which I included in my original email; is that what you had in mind? (What "zero value" is being offset?) 2001-01-01 * "Income is in currency, silly" Income:Stock-as-cad -100 CAD Assets:Brokerage 1 ACME Equity:Trade (Note I've made the decision to use an explicit trading account, for better or for worse.)
Like so:
At grant time:
2018-01-15 * "Grant XXXX"
Income:Hooli:Grants -1695 HOOL.UNVEST
Assets:Unvested:Hooli:XXXX 1695 HOOL.UNVEST
At vest time:
2018-07-15 * "Release event from grant XXXX"
Assets:Unvested:Hooli:XXXX -212 HOOL.UNVEST
Expenses:Vested:Hooli 212 HOOL.UNVEST
Assets:Investments:Traditional:E-TRADE:Lot1 212 HOOL {191.33 USD}
Assets:Investments:Traditional:E-TRADE:Lot1 -83 HOOL {191.33 USD}
Income:Hooli:RSUs -40561.96 USD
Income:Investments:Dividends:HOOL-releases -288.32 USD
Expenses:Taxes:TY2018:Income 13333.53 USD
Expenses:Taxes:TY2018:Pension 2835.18 USD
At sale time:
2020-03-10 * "Close position HOOL at 280.49 USD"
Assets:Investments:Traditional:E-TRADE:Cash 280.49 USD
Assets:Investments:Traditional:E-TRADE:Cash -1.01 USD
Expenses:Financial:Trading-fees 1.01 USD
Assets:Investments:Traditional:E-TRADE:Lot1 -1 HOOL {191.33 USD, 2018-07-05} @ 280.49 USD
Income:Realized-gains:Traditional:E-TRADE (191.33 - 280.49) USD
By the way, I would like to mention that being able to put
mathematical expressions in the transactions is a huge
advantage of Beancount.
--
Rudd-O
http://rudd-o.com/
On 26/11/2020 00.23, James Cook wrote:
To be clear, I feel this is no longer a problem for me. I wrote a plugin that does things the way I like, whether or not it's the most sensible.Awesome! If you can share the code, I'd love to take a look.
Still, I'm curious what you mean. What you're saying sounds a bit like the following transaction, which I included in my original email; is that what you had in mind? (What "zero value" is being offset?) 2001-01-01 * "Income is in currency, silly" Income:Stock-as-cad -100 CAD Assets:Brokerage 1 ACME Equity:Trade (Note I've made the decision to use an explicit trading account, for better or for worse.)Like so:
At grant time:
2018-01-15 * "Grant XXXX"Income:Hooli:Grants -1695 HOOL.UNVESTAssets:Unvested:Hooli:XXXX 1695 HOOL.UNVEST
At vest time:
2018-07-15 * "Release event from grant XXXX"Assets:Unvested:Hooli:XXXX -212 HOOL.UNVESTExpenses:Vested:Hooli 212 HOOL.UNVESTAssets:Investments:Traditional:E-TRADE:Lot1 212 HOOL {191.33 USD}Assets:Investments:Traditional:E-TRADE:Lot1 -83 HOOL {191.33 USD}
Income:Hooli:RSUs -40561.96 USDIncome:Investments:Dividends:HOOL-releases -288.32 USDExpenses:Taxes:TY2018:Income 13333.53 USDExpenses:Taxes:TY2018:Pension 2835.18 USDAt sale time:
2020-03-10 * "Close position HOOL at 280.49 USD"Assets:Investments:Traditional:E-TRADE:Cash 280.49 USDAssets:Investments:Traditional:E-TRADE:Cash -1.01 USDExpenses:Financial:Trading-fees 1.01 USDAssets:Investments:Traditional:E-TRADE:Lot1 -1 HOOL {191.33 USD, 2018-07-05} @ 280.49 USDIncome:Realized-gains:Traditional:E-TRADE (191.33 - 280.49) USD
By the way, I would like to mention that being able to put mathematical expressions in the transactions is a huge advantage of Beancount.
On Wed, May 27, 2020 at 3:48 PM James Cook <jc...@cs.berkeley.edu> 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 ACMEThis 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.
Thank you!
Still, I'm curious what you mean. What you're saying sounds a bit like the following transaction, which I included in my original email; is that what you had in mind? (What "zero value" is being offset?) 2001-01-01 * "Income is in currency, silly" Income:Stock-as-cad -100 CAD Assets:Brokerage 1 ACME Equity:Trade (Note I've made the decision to use an explicit trading account, for better or for worse.)Like so:
At grant time:
2018-01-15 * "Grant XXXX"Income:Hooli:Grants -1695 HOOL.UNVESTAssets:Unvested:Hooli:XXXX 1695 HOOL.UNVESTAt vest time:
2018-07-15 * "Release event from grant XXXX"Assets:Unvested:Hooli:XXXX -212 HOOL.UNVESTExpenses:Vested:Hooli 212 HOOL.UNVESTAssets:Investments:Traditional:E-TRADE:Lot1 212 HOOL {191.33 USD}Assets:Investments:Traditional:E-TRADE:Lot1 -83 HOOL {191.33 USD}Interesting... can I infer from "Holi:XXXX" and "E-TRADE:Lot1" that you make a different account under Unvested for each grant, and a different account under e-TRADE for each release?
Correct inference. I have different accounts for each grant, so
that I can budget the next year's grant income (pre-tax)
separately. Now, the E-TRADE lot accounts, I could probably
dispense with, but I like that having separate accounts keeps
track of the correct lots and cost basis, before they move into
Interactive Brokers (I only use E-TRADE to receive grants, not to
trade, they are so behind IB that I would never bother).
Did the -83 HOOL get sold for tax withholding?
EXACTLY. Account goes UP 212 for the grant vesting, and down 83 for the withholding, so I can keep track of what has actually been withheld (granularity of stock sales means there is always a difference which effectively means you're getting an extra bit of "regular income").
Interestingly enough, the stock withholding is executed in
dollars as you can see, but that amount is "corrected for" to the
national currency in my next payslip, which means it ultimately
becomes the national currency of the place I live in (at FOREX
spot on the day the transaction happened, from what I can infer).
Income:Hooli:RSUs -40561.96 USDIncome:Investments:Dividends:HOOL-releases -288.32 USDExpenses:Taxes:TY2018:Income 13333.53 USDExpenses:Taxes:TY2018:Pension 2835.18 USDAt sale time:
2020-03-10 * "Close position HOOL at 280.49 USD"Assets:Investments:Traditional:E-TRADE:Cash 280.49 USDAssets:Investments:Traditional:E-TRADE:Cash -1.01 USDExpenses:Financial:Trading-fees 1.01 USDAssets:Investments:Traditional:E-TRADE:Lot1 -1 HOOL {191.33 USD, 2018-07-05} @ 280.49 USDIncome:Realized-gains:Traditional:E-TRADE (191.33 - 280.49) USDThis is probably more sensible than what I'm doing, at the very least in the sense that it's less likely to confuse someone reading it later (myself included).
Thanks. This is what I came up with, that was detail-oriented
enough to compare to the yearly W-2 (-equivalent in my current
country of residence, I am not a U.S. tax subject, thank all
heavens) and spot any errors. So far it matches up perfectly,
which I'm happy about. It evolved from my prior use of Ledger,
year by year, to get to this point.
By the way, I would like to mention that being able to put mathematical expressions in the transactions is a huge advantage of Beancount.
Thanks; I forgot I could do that.
Yeah; it makes transaction entry easy and foolproof. It has effectively eliminated the use of spreadsheets on my side for transactional work — the only spreadsheets I keep now, are spreadsheets strictly devoted for analytic work.
Once you've committed to recording everything in this manner, you
get a real sense of where your different income sources are coming
from (in my case surprisingly a lot in stock, substantially more
than the salary) and you also get a (pit-in-stomach feeling) sense
of how much tax you actually pay. I wouldn't recommend this
accounting strategy to most people -- it's a black pill. For me,
it's advantageous to know that my personal expenses are always
below my salary, and the rest is just savings. If you have the
right account structure, it's easy to spot on the income/expense
report (with Fava).
--
Rudd-O
http://rudd-o.com/