Skip to content

DCA and execution

DCA bot open-deal inventory: reconcile holdings and results

A three-deal ledger joins profitable sales with the inventory still held, then reconciles the result to cash and assets at one reporting cutoff.

An ivory tray holding stacks of blank ivory and lime tokens connects by a lime cord to a closed black ledger.
Illustration for dca and execution; examples in this article are educational.

A DCA bot open-deal inventory report should join confirmed fills, remaining asset quantity, allocated purchase cost and a timestamped valuation with realized results from closed and partly closed deals. Keep pending orders and future ladder budgets in separate columns. This makes it possible to reconcile what the bot has earned, what it still holds and what the exchange account actually contains.

A list of completed profitable deals can be accurate while the strategy's total result is negative. The missing information often sits in open inventory. A useful report must preserve that inventory through partial exits, paused bots and reporting cutoffs rather than waiting for every deal to finish.

Set one boundary for the report

This worksheet covers unleveraged, long spot purchases in one exchange account, valued in USDT. It uses a weighted-average operational cost convention within each deal. It does not prescribe tax treatment or apply directly to futures contracts, borrowing or short strategies.

Write these items above the report:

  • Account, venue, instrument and bot/deal identifiers.
  • Cutoff time and timezone, including the latest reconciled fill timestamp.
  • Valuation price, its source and its timestamp.
  • Cost convention, fee treatment and unresolved exceptions.

An exchange balance answers an account-level question; a deal ledger answers an attribution question. A wallet can contain coins bought manually or by another bot. Give unmatched holdings an “unassigned” row instead of distributing them among open deals until the totals look right.

For the broader distinction between booked results and remaining exposure, use the realized versus unrealized PnL guide. Here the task is to make those numbers traceable to inventory.

Build from fills, then attach deal status

The raw record needs venue, account, symbol, trade ID, order ID, execution time, side, filled quantity, quote amount, fee amount and fee asset. Attach each confirmed fill to a bot and deal. One order may produce several fills, so an order ID alone is not a fill identifier.

For example, Binance Spot's account trade records expose trade and order IDs, quantity, quote quantity, commission and commission asset. These are venue-specific fields to map into a ledger, not evidence of a KLINEO reporting feature.

For each deal, maintain two running balances:

Remaining quantity = opening quantity + confirmed acquisitions − confirmed disposals ± non-trade quantity adjustments

Remaining cost = opening allocated cost + acquisition cost − cost allocated to disposals ± documented cost adjustments

In this worksheet, quote-paid purchase fees enter acquisition cost, while quote-paid sale fees reduce sale proceeds. For a partial sale, allocate cost using the average unit cost immediately before that sale. Other explicit operational conventions can work, but mixing them across rows prevents a meaningful reconciliation.

Keep the lifecycle label beside those balances. “Open” does not mean there have been no realized sales, and “closed” should not silently make an unexplained residual quantity disappear.

A three-deal report with a partial exit

All prices, trades and charges below are hypothetical. Every fill has a flat 1 USDT charge paid in quote currency solely to make the arithmetic auditable. This is not an exchange fee schedule. There are no transfers, rebates or base-asset fees, and all deals begin with zero inventory.

The fill history is:

DealConfirmed activityPurchase cost including feesNet sale proceeds
ABuy 0.010 BTC at 60,000; sell all at 61,000601.00 USDT609.00 USDT
BBuy 0.010 at 60,000 and 0.010 at 50,000; sell 0.005 at 58,0001,102.00 USDT289.00 USDT
CBuy 0.010 at 50,000; no sale501.00 USDT0.00 USDT
TotalFour purchase fills and two sale fills2,204.00 USDT898.00 USDT

Deal B's average cost before its sale is 1,102 ÷ 0.020 = 55,100 USDT per BTC. Its sale consumes 0.005 × 55,100 = 275.50 USDT of allocated cost. The realized result is 289 − 275.50 = 13.50 USDT, and the remaining 0.015 BTC carries 826.50 USDT of cost.

Assume the cutoff valuation is 52,000 USDT per BTC. The joined report becomes:

Deal and stateRemaining BTCRemaining costRealized result to dateMarked inventory valueUnrealized result
A, closed00.00+8.000.000.00
B, open after partial sale0.015826.50+13.50780.00−46.50
C, open0.010501.000.00520.00+19.00
Total, USDT except quantity0.0251,327.50+21.501,300.00−27.50

The combined result is 21.50 − 27.50 = −6.00 USDT. Reporting only the fully closed deal shows +8.00. Reporting all realized sales shows +21.50. Neither describes the whole strategy without the open-inventory column.

This marked result includes the fees already paid under the stated allocation convention. It excludes future selling charges and any execution difference from the valuation price. If you add an estimated liquidation-value column, label its assumed exit costs separately rather than presenting it as a confirmed receipt.

Prove the bridge in both directions

Two independent identities help find errors.

First, purchase cost must be either allocated to sold units or still attached to held units:

2,204.00 = 876.50 allocated cost of sales + 1,327.50 remaining cost

Second, compare the result with the cash-and-inventory view:

898.00 net sale proceeds + 1,300.00 marked holdings − 2,204.00 purchase cost = −6.00 USDT

With a hypothetical starting cash balance of 3,000 USDT, ending cash is 3,000 − 2,204 + 898 = 1,694. Add 1,300 of inventory for total marked assets of 2,994. The same 6 USDT reduction appears again.

Remaining cost is therefore not the same as net cash consumed. Here net cash consumed is 1,306 USDT, while remaining cost is 1,327.50; the 21.50 difference is realized gain. Substituting one figure for the other would erase that gain or count it twice.

Keep inventory separate from order commitments

An accepted purchase order can reserve quote cash without adding BTC. A partially filled order has both a filled inventory component and an unfilled instruction. Planned averaging orders that have not been placed belong in a future-budget field.

Binance Spot's account information response separates free and locked balances. Treat those as account balance buckets; do not add locked funds to total cash a second time. The DCA capital-requirements worksheet handles whether remaining instructions can be funded.

Likewise, a cancelled safety order changes an instruction, while inventory already acquired remains in the report. When a price jumps across the ladder, the price-gap and safety-order guide explains why crossed levels cannot substitute for execution evidence.

Turn mismatches into explicit exceptions

Use this small review sheet before accepting the totals:

ExceptionWhat to checkReporting treatment until resolved
Deal quantity exceeds attributed wallet quantityMissing sale, base-paid fee, transfer or other automationFlag the shortfall; do not invent a fill
Wallet quantity exceeds all attributed holdingsManual acquisition, deposit or missing purchaseKeep an unassigned quantity row
Same fill appears twiceRepeated import or overlapping history pagesDeduplicate by venue/account/symbol/trade identity
Bot and exchange snapshots disagreeDifferent cutoff times or a fill arriving during collectionReconcile to one cutoff and label stale rows
Closed deal retains dustRounding, fee denomination or unfilled sale remainderRetain residual quantity and cost explicitly

A base-paid purchase fee reduces the quantity received. A fee paid with a third asset needs its own asset debit and a documented conversion convention for a common-currency report. The simple quote-fee example above cannot be copied unchanged.

Non-trade movements also matter. Binance's Spot user-data documentation distinguishes balance updates caused by deposits, withdrawals and account transfers from order updates. A transfer out changes the selected account's holdings; it is not automatically a strategy sale or a realized trading loss.

When a person adjusts or closes exposure outside the bot, reconcile that action before trusting the next summary. The manual-intervention guide covers that operational handoff. An unresolved difference should remain visible with its last verified timestamp, even when every completed-deal row is green.

Method and limits

This AI-assisted article uses primary Binance Spot documentation reviewed on 23 October 2026 and original hypothetical calculations. The report is an educational operational worksheet, not a claim that KLINEO provides this exact export. It does not establish tax cost basis, executable liquidation proceeds, or the completeness of any particular account history.

Keep the context with the example.

Each worked example is illustrative, with its sources and assumptions in the article. Read our editorial standards for authorship, verification and corrections.