How to track various factors in ESPP

91 views
Skip to first unread message

Michael Jaison

unread,
May 24, 2020, 4:36:50 AM5/24/20
to Beancount
Most of the companies offer ESPP stock options, which has a complicated tax implications as well.

Example:
Grant date: 2019-01-01, Price: $100
Vest date:   2019-06-30, Price: $110
Discount price:  $85. (15% discount on lower price of grand and vest date)
Sale date: 2020-07-01, Price: $120

My current option is:

2019-06-30 * "ESPP buy"
Assets:US:Hooli:EsppFund -850 USD
Assets:US:Etrade:Hooli:Espp 10 HOOL {85 USD}

2020-07-01 * "ESPP Sell"
Assets:US:Etrade:Hooli:Espp -10 HOOL {85 USD} @120 USD
Assets:US:Etrade:Brokerage 1200 USD
Income:US:Stocks:Gain -200 USD ; Long-term gain
Income:US:Hooli:Salary -150 USD ; Espp income

* Discount income tax is postponed to day of sale. Even though the income is earned in 2019, it is only taxable in 2020. How to account for this?
* Qualifying and Disqualifying dispositions - Based on the holding period, the difference between grand-date FMV and vest-date FMV is taxed differently. How to account for / track this?

Any insights would be helpful.

- Michael

Martin Blais

unread,
May 24, 2020, 9:45:26 AM5/24/20
to Beancount
On Sun, May 24, 2020 at 4:36 AM Michael Jaison <gmichae...@gmail.com> wrote:
Most of the companies offer ESPP stock options, which has a complicated tax implications as well.

Example:
Grant date: 2019-01-01, Price: $100
Vest date:   2019-06-30, Price: $110
Discount price:  $85. (15% discount on lower price of grand and vest date)
Sale date: 2020-07-01, Price: $120

My current option is:

2019-06-30 * "ESPP buy"
Assets:US:Hooli:EsppFund -850 USD
Assets:US:Etrade:Hooli:Espp 10 HOOL {85 USD}

2020-07-01 * "ESPP Sell"
Assets:US:Etrade:Hooli:Espp -10 HOOL {85 USD} @120 USD
Assets:US:Etrade:Brokerage 1200 USD
Income:US:Stocks:Gain -200 USD ; Long-term gain
Income:US:Hooli:Salary -150 USD ; Espp income

* Discount income tax is postponed to day of sale. Even though the income is earned in 2019, it is only taxable in 2020. How to account for this?

Do you mean that you want to recognize the discount in 2019 and the capital gain in 2020?
You would do it by recognizing the discount as income in 2019 (it'll be taxed as income IINM) and hold the asset at FMV instead of discounted rate: 

2019-06-30 * "ESPP buy"
 Assets:US:Hooli:EsppFund -850 USD
 Assets:US:Etrade:Hooli:Espp 10 HOOL {100 USD}
 Income:US:Hooli:Salary -150 USD ; Espp income

2020-07-01 * "ESPP Sell"
 Assets:US:Etrade:Hooli:Espp -10 HOOL {100 USD} @120 USD
 Assets:US:Etrade:Brokerage 1200 USD
 Income:US:Stocks:Gain -200 USD ; Long-term gain

 
* Qualifying and Disqualifying dispositions - Based on the holding period, the difference between grand-date FMV and vest-date FMV is taxed differently. How to account for / track this?

You can use a synthetic currency to hold your granted shares, such as HOOL.UNVESTED at price 0 USD (you don't want unvested to show up on your balance sheet) and when it vests you can deduct the corresponding granted unvested units.


 

Any insights would be helpful.

- Michael

--
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/82929381-b8e3-4b57-9d03-e162224cebce%40googlegroups.com.

Michael Jaison

unread,
May 24, 2020, 12:12:13 PM5/24/20
to Beancount
Thank you Martin for your answers.

* Discount income tax is postponed to day of sale. Even though the income is earned in 2019, it is only taxable in 2020. How to account for this?

Do you mean that you want to recognize the discount in 2019 and the capital gain in 2020?
You would do it by recognizing the discount as income in 2019 (it'll be taxed as income IINM) and hold the asset at FMV instead of discounted rate: 

2019-06-30 * "ESPP buy"
 Assets:US:Hooli:EsppFund -850 USD
 Assets:US:Etrade:Hooli:Espp 10 HOOL {100 USD}
 Income:US:Hooli:Salary -150 USD ; Espp income

Yes, I want to recognize the discount as income (because it is taxed as income), and remaining gain as capital gain.
But, the income will be only taxed in the year when it is sold. If it is recognized as income here, then it will show in 2019 income sheet. How to handle this?
 

 
* Qualifying and Disqualifying dispositions - Based on the holding period, the difference between grand-date FMV and vest-date FMV is taxed differently. How to account for / track this?

You can use a synthetic currency to hold your granted shares, such as HOOL.UNVESTED at price 0 USD (you don't want unvested to show up on your balance sheet) and when it vests you can deduct the corresponding granted unvested units.


After the vest date, all the shares are vested and sellable. But the purchase price is lower of FMV of grant-date ($100) and vest-date ($120). So in this case, you were able to buy at $100 when the current market price is $120. This difference has to be tracked differently because this difference is taxed as qualifying or disqualifying dispositions based on the sale date.

Thanks in advance.

Martin Blais

unread,
May 24, 2020, 9:25:43 PM5/24/20
to Beancount
On Sun, May 24, 2020 at 12:12 PM Michael Jaison <gmichae...@gmail.com> wrote:
Thank you Martin for your answers.

* Discount income tax is postponed to day of sale. Even though the income is earned in 2019, it is only taxable in 2020. How to account for this?

Do you mean that you want to recognize the discount in 2019 and the capital gain in 2020?
You would do it by recognizing the discount as income in 2019 (it'll be taxed as income IINM) and hold the asset at FMV instead of discounted rate: 

2019-06-30 * "ESPP buy"
 Assets:US:Hooli:EsppFund -850 USD
 Assets:US:Etrade:Hooli:Espp 10 HOOL {100 USD}
 Income:US:Hooli:Salary -150 USD ; Espp income

Yes, I want to recognize the discount as income (because it is taxed as income), and remaining gain as capital gain.
But, the income will be only taxed in the year when it is sold.

Are you sure? This seems unusual.
 
If it is recognized as income here, then it will show in 2019 income sheet. How to handle this?

What's wrong with the original method you proposed? It recognizes both incomes in the year of sale, which IIUC is that you want.
I suppose one thing I don't like about it is that the cost basis is incorrect.

As an alternative, you could modify what I proposed to put hold the instrument at a cost of 100 USD and place the 150 USD in a transfer account (e.g., an Assets account), and debit from it when in the year you sell. It'll be a bit manual to trace down the amounts, but if you don't have a ton of them, that's probably manageable. If you have a lot, you could use labels on your cost specs and write a script that will dig back in time the original vesting event to figure out the amount for you at the time of selling.

  
* Qualifying and Disqualifying dispositions - Based on the holding period, the difference between grand-date FMV and vest-date FMV is taxed differently. How to account for / track this?

You can use a synthetic currency to hold your granted shares, such as HOOL.UNVESTED at price 0 USD (you don't want unvested to show up on your balance sheet) and when it vests you can deduct the corresponding granted unvested units.


After the vest date, all the shares are vested and sellable. But the purchase price is lower of FMV of grant-date ($100) and vest-date ($120). So in this case, you were able to buy at $100 when the current market price is $120. This difference has to be tracked differently because this difference is taxed as qualifying or disqualifying dispositions based on the sale date.

That's something you'll enter manually. You could have two separate accounts, one for long-term gains and one for short-term gains.
Personally I prefer to put that in my scripts that do reporting, there's a lot of custom code in there, it figures out which ones were short-term and long-term, e.g..
I haven't generalized these things to all possible situations yet so there's a lot of stuff like that which lives in experiments/


 

Thanks in advance.

--
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.
Reply all
Reply to author
Forward
0 new messages