--
---
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 ledger-cli+...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.
Hi Martin-Thanks for the response- I tried that and it mostly works.Unfortunately, encoding the strike price in the commodity means that you need N entries in your price database for the same stock to get the value of N different grants. I also tried setting up an equivalency of the different commodities with the 'real' stock, but this gets back into it reports showing that an actual amount of income, which doesn't yet exist.
What I ended up actually doing is basically what I used to do: track estimated gross value of options in dollars. It's really what I want to know, anyway. I wrote a short python script that does the calculation given a list of grants and the price database, and spits out monthly records I copy into my ledger.
Areas for improvement:
- as the OP pointed out above, there is no easy way to calculate the price of vested-but-unexercised, and unvested options
- ORNG was purchased at $1.20 at exercise time. This is suboptimal because ledger, for example, would assume $1.20 was the market price of ORNG on that date, which is untrue. Is there a way to model things better using generic bookkeeping methods?
If I read this right, you're essentially doing the same thing as what I suggest except1. holding your options with no cost basis.2. holding unvested options in an asset account.About (1), I forget the rules for taxation of options, but surely when they are granted to you they have a cost associated with them. This could be the cost basis you use instead of no cost basis.
About (2): It's unfortunate that these options will appear on your balance sheet.
- as the OP pointed out above, there is no easy way to calculate the price of vested-but-unexercised, and unvested optionsWhy couldn't you have a script that parses your ledger, extracts the options instruments, parses your commodity conversion to get the strike prices and then spit out price entries from estimated vol/underlying values gathered from the market?Just plug in estimated numbers into this, you should get a coarse estimate:
- ORNG was purchased at $1.20 at exercise time. This is suboptimal because ledger, for example, would assume $1.20 was the market price of ORNG on that date, which is untrue. Is there a way to model things better using generic bookkeeping methods?1.20 is the cost basis, not the market price. Why do you say it assumes 1.20 is the market price?
If I read this right, you're essentially doing the same thing as what I suggest except1. holding your options with no cost basis.2. holding unvested options in an asset account.About (1), I forget the rules for taxation of options, but surely when they are granted to you they have a cost associated with them. This could be the cost basis you use instead of no cost basis.ISOs actually don't have any sort of a cost associated with them. If you don't use them, you lose nothing. In fact, this was one of the questions I was going to ask - if Ledger or Beancount would be okay with this, but I found that they are.
About (2): It's unfortunate that these options will appear on your balance sheet.I'd actually prefer that they do (this is basically future promised income), but your pointing this out made me realize that I should probably use a different commodity for vested and unvested options, and set the price of unvested options to zero.- as the OP pointed out above, there is no easy way to calculate the price of vested-but-unexercised, and unvested optionsWhy couldn't you have a script that parses your ledger, extracts the options instruments, parses your commodity conversion to get the strike prices and then spit out price entries from estimated vol/underlying values gathered from the market?Just plug in estimated numbers into this, you should get a coarse estimate:Will look into this. I was thinking of a simpler (current_price - strike_price) to value them, which is what I currently use.
- ORNG was purchased at $1.20 at exercise time. This is suboptimal because ledger, for example, would assume $1.20 was the market price of ORNG on that date, which is untrue. Is there a way to model things better using generic bookkeeping methods?1.20 is the cost basis, not the market price. Why do you say it assumes 1.20 is the market price?Perhaps my understanding is not correct, but I was under the impression Ledger would assume that to be the market price of that commodity on that day without other overriding data. Also, what would happen to systems that extract the market price based on this cost basis - for example, to compute net worth on a particular day, or investment returns, or unrealized profits/losses?
;; Notes:;;;; * I put the exercise price in the commodity name itself, e.g., FOO_X100, as;; in 'X' for strike price and '100' for 100$/share. This defines the;; instrument. Put the expiration date in there as well if you feel a need;; to do that (use the exchange codes if it makes sense to you).
2014-06-01 * "Stock options - acquire"Assets:BorganSchmanley:FOO-X100 8 FOO-X100 {0.80 USD}Income:BorganSchmanley:OptionsVesting ;; Note: Non-taxable if statutory2014-12-01 * "Stock options - exercise"Assets:BorganSchmanley:FOO-X100 -4 FOO-X100 {0.80 USD} @ 120.00 USDExpenses:OptionsExercise 3.20 USDAssets:BorganSchmanley:FOO 4 FOO {120.00 USD}Assets:BorganSchmanley:Cash -400.00 USDIncome:BorganSchmanley:Gains -80.00 USD ;; These gains to be reported on W-2 AFAIK.2014-12-01 * "Stock options - sale"Assets:BorganSchmanley:FOO -4 FOO {120.00 USD} @ 121.00 USDAssets:BorganSchmanley:Cash 484.00 USDIncome:BorganSchmanley:Gains -4.00 USD
I could increase the max size for currency names it's an arbitrary choice
--
0.80 is the cost basis of the option
To unsubscribe from this group and stop receiving emails from it, send an email to ledger-cli+unsubscribe@googlegroups.com.