Skip to main content

Historical Balance, Unrealized Gain/Loss, or SoDA: Which Report Do I Need?

R
Written by Richard Pasquin

Your question

Use

What it shows

What did we hold and what was it worth at a past date?

Recorded quantities and value at the report's end date, plus received, sent, fees, and net change for the period.

How much have unsold holdings gained or lost against their cost?

Remaining quantity, cost basis, market value, and the difference.

What holdings support the calculation's closing statement?

Holdings by wallet and asset, with quantity, book value, fair market value (FMV), account treatment, and wallet role.

UGL = market value − remaining cost basis. Cost basis is the cost assigned to the units still held.

Example: You hold 2 ETH with a total cost of $6,000 and a market value of $8,000. Historical Balance shows $8,000 of value at that date. UGL is $2,000. With FV treatment, SoDA shows 2 ETH, $6,000 book value, and $8,000 FMV.

Note: The screenshots below use a demo entity. Missing prices, negative holdings, and failed checks are issues to resolve before approval.

1. Check holdings at a past date

Go to Subledger > Reports > Treasury > Historical Balances By Assets. Choose Historical Balances By Connections instead for a wallet or exchange view.

Click Generate Report.

Choose Date granularity. Set the start date to include the history you need and the end date to your cut-off. Select the connections, then click Apply.

Wait for Success. Confirm the Date Range, then click View Details.

Scroll the table right to review Balance, Balance Value, and Unit Price. Unit Price uses the closing price for the report's end date; Balance Value is balance × unit price.

Net Change is movement in units, not profit. Historical Balance does not compare holdings with acquisition cost. It excludes liquidity-pool or similar positions where assets are no longer held in the wallet.

2. Review unrealized gains and losses

Go to Subledger > Calculation and choose a Completed run that covers the holdings and period you need.

Open Checks. Resolve failures and missing inventory, and review warnings before relying on the values.

Open Unrealized Gain/Loss.

Check Price as of, including the time. If you need another valuation time, change it and click Refresh Prices. Refreshing prices does not add transactions to an older calculation.

Use Assets to review remaining quantity, cost basis, market value, and UGL by asset. Check Status for missing prices.

Use Connections to find which wallet or exchange holds the assets behind the total.

UGL is a value change on unsold holdings. It is not sale proceeds, realized gain/loss, or a posted journal.

3. Use SoDA for the closing holdings statement

SoDA uses the holdings left at the end of a cost basis calculation, grouped by wallet and asset.

In the same completed run, open More > Statement of Digital Assets.

If the statement is empty, click Generate and wait for the holdings to load.

Review the wallet, asset, quantity, FMV, and book value. A dash is not a confirmed zero; the example below still needs account treatments and value review.

Account treatment controls how SoDA displays and groups values:

Treatment

SoDA presentation

FV (Fair Value)

Market value in FMV, cost in Book Value; included in FV totals.

BV (Book Value)

Holdings at cost; included in BV totals.

SC (Stablecoin)

Cash-like presentation in the Stablecoins section after Save; included in SC totals.

Treatment changes do not change quantity, unit price, or underlying cost. Wallet Role groups a wallet as Ops/Admin, Tax Liability, or Native under your reporting policy.

Before comparing totals

Match the entity, assets, connections, reporting currency, and cut-off time. For UGL and SoDA, also match the calculation and its inventory scope. A report from an older run does not include later imports.

Compare quantities first, then compare values on the same basis. SoDA's BV and SC totals are not all fair-market-value totals. Resolve missing prices, negative balances, and excluded activity before sign-off.

Did this answer your question?