Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Consolidated report sheet specifically structured for Form 8949 (what we've got to file with taxes that 1099B should feed into) #1

Closed
3 of 5 tasks
hickeng opened this issue Feb 14, 2024 · 7 comments
Assignees
Labels
enhancement New feature or request filing Related to actually filing taxes, whether working through Turbotax or direct user experience User experience impacts

Comments

@hickeng
Copy link
Owner

hickeng commented Feb 14, 2024

Add a report that provides the specific details needed for entry into f8949 per lot.

At a minimum provide:

  • field names that are f8949 box/column numbers
  • appropriate values for those cells

Depends on #38

@hickeng hickeng added the enhancement New feature or request label Feb 14, 2024
@hickeng hickeng self-assigned this Feb 16, 2024
@hickeng hickeng changed the title Consolidated report sheet specifically structured for 1099B Consolidated report sheet specifically structured for Form 8949 (what we've got to file with taxes that 1099B should feed into) Feb 16, 2024
@hickeng
Copy link
Owner Author

hickeng commented Feb 17, 2024

Using costbasis.com as a sanity check gives matching values to my sheet where I have a corresponding column. However the site is not friendly to lots that have fractional amounts (all of mine) where the fraction is preserved. eTrade (by inference) determined the fraction on my entire holding, and sold that fraction from a single lot (oldest RSU), resulting in my total holding being a whole number of shares, but any given lot not being a whole number.

While costbasis.com agrees 100% with the basis calc for the new basis of AVGO I derived from f8937, it hasn't clarified for me conceptually what basis should be used when reporting gain from a lot to the IRS. The report it generates notes a cost basis to be reported on Form 8949, unfortunately there's no explanation or references.

(note: costbasis.com uses the manual total value but calculated cash value when reporting the cash portion as gain, which can cause some minor deltas if conversion ratios entered into the form aren't identical to those from the sheet).

  • determine why costbasis.com is using the above calc for basis to report - I understand what it's doing, and I think I understand why, but I don't have an authoritative reference to validate again.
  • determine basis to report associated with gain to IRS this year and document along with reasoning and reference links

Snippets from Form 8949:

How To Complete Form 8949, Columns (f) and (g) - this is a giant if/else statement in the form of a table.

If more than one applies, complete a separate form for each box. Check one of:

...but can still have multiple entries of that Box type on the same form.

Short term
(A) Short-term transactions reported on Form(s) 1099-B showing basis was reported to the IRS (see Note above)
(B) Short-term transactions reported on Form(s) 1099-B showing basis wasn’t reported to the IRS
(C) Short-term transactions not reported to you on Form 1099-B
...
Note: If you checked Box A above but the basis reported to the IRS was incorrect, enter in column (e) the basis as reported to the IRS, and enter an adjustment in column (g) to correct the basis. See Column (g) in the separate instructions for how to figure the amount of the adjustment.

Long term
D) Long-term transactions reported on Form(s) 1099-B showing basis was reported to the IRS (see Note above)
(E) Long-term transactions reported on Form(s) 1099-B showing basis wasn’t reported to the IRS
(F) Long-term transactions not reported to you on Form 1099-B
...
Note: If you checked Box D above but the basis reported to the IRS was incorrect, enter in column (e) the basis as reported to the IRS, and enter an adjustment in column (g) to correct the basis. See Column (g) in the separate instructions for how to figure the amount of the adjustment.

Tasks (promoted to main comment for github UI reasons)

  • add inputs to datagrids for 1099B values, including whether "reported to IRS"
  • check separate instructions referenced
  • rounding to whole dollars is permitted but must be applied consistently. Add tweak to control rounding/no-rounding.
  • if attaching multiple forms, attach the one that lists code 'Z' in column (f) first.

If you don't need to make any adjustments to the basis or type of gain (or loss) reported to you on Form 1099-B ... or to your gain (or loss) for any transactions for which basis has been reported to the IRS ..., you don't have to include those transactions on Form 8949. Instead, you can report summary information for those transactions directly on Schedule D. For more information, see Exception 1, later.

Column descriptions start here

If there are any selling expenses or option premiums that aren't reflected on the form or statement you received (by an adjustment to either the proceeds or basis shown), enter “E” in column (f) and the necessary adjustment in column (g)

In order to explain any adjustment to gain (or loss) in column (g), enter the appropriate code(s) in column (f). See How To Complete Form 8949, Columns (f) and (g) , later. If more than one code applies, enter all the codes that apply in alphabetical order (for example, “BOQ”). Don't separate the codes by a space or comma.

image

@hickeng
Copy link
Owner Author

hickeng commented Feb 17, 2024

Should the ordinary income basis adjustment for ESPP be applied to the basis reported in f8949 for converted lots that haven't been sold?

We know what the concrete amount is for qualified, and the two possible amounts for disqualified, so the question is does this adjustment apply to those lots all the time, or only at point of time of sale where the income is recognised?

I'm going to work on the understanding that the basis adjustment does not apply until the income is recognised. Reasoning here is that we're not yet liable for the tax so not yet liable for adjustment (basic symmetry).

@hickeng hickeng assigned hickeng and unassigned hickeng Feb 17, 2024
@hickeng
Copy link
Owner Author

hickeng commented Feb 17, 2024

I've derived the following from first principles with the following axioms:

  • realized gain and adjusted avgo basis are inflexible values dictated by f8937
  • f8949 proceeds is inflexible as an actual dollar value credited & fmv of shares received
  • must pay tax on realized gain
  • must pay tax on deferred gain on future sale
  • difference between proceeds and basis reported on f8949 must equal realized gain

The only flexible value we have to reconcile the above is the reported f8949 basis:

# known without calculation
f8949_proceeds = cash_received + avgo_fmv

# the alternate gain calculation from f8937
# translating it, this is also the real economic value received: total consideration - true basis
alternate_gain_calc = cash_received + avgo_fmv - vmw_basis

# the approximate threshold for per-share vmw basis (adjusted for dividends) where we switch clauses is
# 0.2520 * 0.521 * 979.50 = 128.601
if cash_received < alternate_gain_calc {

  # composite vmw basis was lower than avgo fmv, ie. we've got a capital gain (avgo_fmv-vmw_basis) from the share consideration that is deferred.
  # gain mandated by f8937 does not include deferred gain.
  f8937_gain = cash_received

  # the deferred gain from vmw->avgo conversion must still be realized in the future. Adjustment
  # to avgo_basis is the way this is accomplished. This is rolled into the mandated f8937 basis adjustment.

  # we need the 2023 f8949 to reconcile correctly in the future against the deferred gain resulting from the inflexible
  # avgo_basis. future avgo_basis is dictated as vmw_basis - cash_received + f8937_gain which simplifies to vmw_basis
  # for this case.
  #
  # we're deferring avgo_fmv - vmw_basis gain to the future, and we must realize the cash_received as gain now.
  # we've got a mandated basis of vmw_basis for future sales, so our current basis is avgo_fmv to achieve the necessary delta.
  f8949_basis = avgo_fmv

} else {

  # composite vmw basis was higher than avgo fmv - no deferral
  # gain mandated by f8937
  f8937_gain = alternate_gain_calc

  # that's our true gain, so we should be ok with an avgo_basis of avgo_fmv... but f8937 says the adjust avgo basis must be:
  # avgo_basis = vmw_basis - cash_received + f8937_gain
  #
  # This is still okay, as that simplifies
  # avgo_basis = vmw_basis - cash_received + cash_received + avgo_fmv - vmw_basis
  # avgo_basis = avgo_fmv
  f8949_basis = vmw_basis
}

# adjusted avgo basis for future sale - this is mandated by f8937
avgo_basis = vmw_basis - cash_received + f8937_gain

So, I'm settled on the approach for proceeds and basis. gain is mandated by f8937 and is just the difference of those two.
I've contemplated adding those to the sheet immediately, but am first going to deal with #24 so that I've got true change tracking for adding this critical calc in.

I've not yet looked deeply into the if/else statement in the f8949 separate instructions for what codes to use.

@hickeng
Copy link
Owner Author

hickeng commented Feb 17, 2024

  • remove "not in the sheet yet" from readme when this merges.

@hickeng
Copy link
Owner Author

hickeng commented Feb 18, 2024

From cash2boot tool notes:

Note that the IRS regulations do not specify a required method to determine the market value of the new shares received. You can use the market value of the opening, average, or closing price on the day before the merger or the day of the merger.
Some taxpayers even use the "volume weighted average price." If it is a taxable cash to boot merger, be sure to use the market value that was used to compute the taxable value on your Form 1099.

  • add those options to the Tweak
  • find or derive the valued used to compute 1099-B
  • add a validator to flag use of a differing tweak value

We are getting reports from some readers that their brokerage firms are reporting cash to boot merger proceeds as the amount of cash to boot received plus the amount of the cost of their original stock. This is not correct. This is what you should do:

  1. Report the sales proceeds exactly as they appear on your Form 1099.
  2. Calculate the correct taxable gain using our cash to boot calculator.
  3. Deduct the correct taxable gain from the sales proceeds amount.
  4. Enter the resulting number as your cost basis on Form 8949.
  5. You should then end up with the correct taxable gain being reported for tax purposes.
  • consider these points when generating 8949 values.

@hickeng
Copy link
Owner Author

hickeng commented Feb 19, 2024

Using another site that's got a clearer explanation:

Gain or loss?

real economic impact = total consideration (cash + fmv received) * vmw holding - vmw basis

If we look to see if it's possible to realize a loss, let's start with the highest basis possible.
The highest VMW basis was for RSUs released on 2019-05-01 at $185.59 (that's the figure adjusted from $202.46 for the 2021 dividend)

# breakeven
0 = (142.50 * 0.479 + 979.50 * 0.252 * 0.521) * 1 -  (185.59 + x)
x = 142.50 * 0.479 + 979.50 * 0.252 * 0.521 - 185.95
x = 196.858014 - 185.95 
x = 10.908014

So VMW never reached a basis high enough for us to incur an actual loss when using pro-rata.

@hickeng hickeng added user experience User experience impacts filing Related to actually filing taxes, whether working through Turbotax or direct labels Feb 19, 2024
hickeng added a commit that referenced this issue Mar 8, 2024
I reworked the basis logic in #1
That logic is embedded into the README for reference. This updates that reflection.
@hickeng
Copy link
Owner Author

hickeng commented Mar 11, 2024

Outstanding:

  • add the Code (f) value then this is sufficiently complete barring future bugs being discovered.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
enhancement New feature or request filing Related to actually filing taxes, whether working through Turbotax or direct user experience User experience impacts
Projects
Development

No branches or pull requests

1 participant