u/Necessary_Ask6423

First 1099-DA season: check how your software handled transfers to your own wallets before you file

Something I keep seeing now that 1099-DA forms are in play: transfers between your own wallets getting booked as taxable disposals.

The pattern: you move coins from an exchange to your own cold wallet, or between two wallets you control. Your tax software doesn't know the receiving address is yours, so it treats the send as a sale at fair market value. If the coin appreciated since you bought it, that's a phantom gain — tax owed on money you never actually realized.

I went down this rabbit hole after running standard cost-basis rules across a set of wallets that are publicly known to belong to one person, twice: once treating them as one owner, once as strangers. Same chain data, roughly $45M of difference in "gains". The only thing that changed was the ownership assumption.

What I'd check before filing:

- Write down every address you control, including old ones you barely use.

- In your software's transaction list, filter for disposals that have no fiat or stablecoin proceeds. Those are the suspects.

- For each suspect, look up the tx hash in a block explorer and check whether the receiving address is on your list. If it is, it should be a transfer (basis carries over), not a sale.

- Bridges and exchange internal moves are where tools misread the most.

Disclosure: I build verification tooling in this space, which is why I stare at this failure mode a lot. No links here on purpose — the checklist works with whatever software you already use.

Has anyone's software or 1099-DA actually matched self-transfers correctly this year? Curious what people are seeing.

reddit.com
u/Necessary_Ask6423 — 7 days ago

We computed realized gains on vitalik.eth's public wallet cluster twice — with and without wallet linking. The difference: $44.9M of phantom gains

Disclosure up front: I built the tool used for this experiment, so read with that in mind. The method and data below are reproducible without it.

We wanted to measure — not argue — how much damage "per-wallet cost basis without wallet linking" actually does. So we took the most public wallet cluster on Ethereum (vitalik.eth plus the Etherscan-tagged VB / Vb 2 / Vb 3 addresses and one media-documented cold wallet — all attributions are on-chain ENS names, Etherscan public name tags, or mainstream press; no doxxing) and computed realized gains on its native-ETH history (genesis → 2023-03-31) twice with the same engine, same data, same classifications. The ONLY difference: whether transfers between the entity's own wallets carry cost basis, or arrive at $0 basis — the behavior you get from per-wallet tracking when your own wallets aren't linked.

Results:

- Naive per-wallet run (transfers lose basis): $164,130,459 realized gain

- Transfer-aware run (basis carried across own transfers): $119,154,719

- Overstatement ("phantom gains"): $44,975,739

The single most telling year is 2022: the naive run reports $31,336,181 of realized gains; with basis correctly carried across the entity's own transfers, the same disposals come out at $10,476,703 — a $20,859,478 overstatement in one tax year. Some individual disposals flip sign entirely: one 2021-12-14 disposal shows a $7.6M gain in the naive run and is actually a ~$800k loss.

Why this cluster: it does exactly the things that break naive tools — multi-hop self-transfers (a 320,000 ETH move to a Safe in May 2021, with later 30,000 and 40,000 ETH moves from the Safe onward to a cold wallet), WETH wraps, self-staking, and large disposals years after the transferred coins were acquired.

Method, briefly: transactions from the key-less Blockscout public API plus node execution traces; every gas fee from the transaction's own receipt (gasUsed × effectiveGasPrice, 2,671/2,671 receipts); DefiLlama daily close for FMV; per-wallet FIFO lots. Quality gate: after replaying every event, the ledger balance of all 5 wallets ties out to the actual on-chain balance at the cutoff block within 0.0001 ETH. If it didn't tie out, we wouldn't publish the dollar figures.

Limitations, before anyone quotes this: native ETH only (no ERC-20 in this demo). Every out-of-cluster outflow is modeled as a disposal at FMV — many are surely gifts or exchange deposits, so the absolute gain levels are modeling artifacts and not anyone's actual tax position; both runs treat them identically, so the difference (the $44.9M) is unaffected. FIFO only. And "naive" is our own engine with linking switched off — we did not run any commercial product, and we deliberately modeled the naive side charitably (transfers out are not treated as taxable sales). This is an engineering demonstration, not tax advice.

Why it matters now: since 2025, Rev. Proc. 2024-28 requires per-wallet basis tracking rather than a universal pool, and 1099-DA reporting means brokers will report basis gaps they can't see across. If you've ever moved coins between your own wallets, it's worth checking whether your software carried the basis or booked the arrival at $0.

Full write-up with the year-by-year table, the tie-out numbers, and the reproduction steps: https://verilot.app/blog/45m-phantom-gains-public-wallet

If you want to run the same check on your own addresses, the tool I built for this is a free, read-only scan (public address in, report out — no signup): https://verilot.app/check

u/Necessary_Ask6423 — 15 days ago