Skip to content

DCA and execution

DCA bot take profit ladders: allocate every exit

An illustrative 40/30/30 exit plan shows why the highest target is not the whole deal's return, and why profitable first exits can leave a losing residual.

Three ivory paper loops sit on staggered trays, with a lime tab on the last loop against black.
Illustration for dca and execution; examples in this article are educational.

A DCA bot take profit ladder divides a holding into planned portions sold at different target prices. Define each portion's quantity basis, keep allocated acquisition cost with the unsold units, and combine realized gains with the remaining inventory's valuation. Reaching an early target does not establish the result of the whole deal.

A ladder answers two questions: how much leaves at each level, and what remains if the market never reaches the next one? A useful plan makes both visible before choosing the percentages. This guide uses unleveraged long spot inventory and an explicit operational cost convention; derivative positions need different quantity and margin rules.

Specify what each percentage divides

An exit target needs a price and a quantity. A label such as “30%” could describe a price increase, a share of the original holding, or a share of whatever remains. Those are different instructions.

For example, 3Commas' multiple take profit explanation describes configuring profit percentages and sale portions for separate DCA exit levels. That documents one provider's feature. It does not establish how another bot, including KLINEO, interprets the same settings.

Use a written quantity rule and record the confirmed holding when the ladder is created. For a frozen holding of 10 units, allocations of 40%, 30% and 30% of that original quantity produce sales of 4, 3 and 3 units. They total 10.

Applying those percentages sequentially to the remaining quantity instead sells 4, then 1.8, then 1.26 units. Only 7.06 units leave; 2.94 remain. Percentages that add to 100% do not ensure a full exit when their denominators change.

For original-quantity allocations, write q_i = Q_start × w_i, where the weights sum to one. For remaining-quantity instructions, write q_i = Q_before_i × f_i. If the final instruction means “sell all remaining units,” state that explicitly and check its executable quantity after rounding and fees.

Keep planned tranches separate from executions. A planned four-unit first exit may itself fill through several trades. The partial take profit fill worksheet handles that order-level accounting. Here, multiple exits are deliberate allocations established before execution.

Build a three-level ladder from confirmed inventory

The following prices, fees and fills are hypothetical, chosen to expose the accounting rather than recommend a configuration. A fictional ABC/USDT deal buys four ABC at 115 USDT and six at 90 USDT. Purchase notional is 4 × 115 + 6 × 90 = 1,000 USDT, with 10 ABC acquired and a gross average entry of 100 USDT/ABC.

Assume every purchase has a 0.10% fee paid separately in USDT, and every sale has a 0.10% fee deducted from USDT proceeds. No fee consumes ABC. Total acquisition cost is therefore 1,001 USDT, or 100.10 per ABC. This weighted-average operational convention is not a tax cost-basis prescription.

Freeze additional purchases for this example. Define three fixed limit-sale levels as percentages of the original 10 ABC:

Planned exitShare of original quantityABC to sellTarget, USDT/ABCGross proceeds if fully filledNet proceeds after assumed sale fee
First40%4102408.000407.592
Second30%3105315.000314.685
Third30%3110330.000329.670
Total100%10—1,053.0001,051.947

These are scenario fills at the stated prices, not a prediction that a price touch fills a limit order. The target increases are 2%, 5% and 10% relative to the gross average entry. They are not net returns after fees.

Each tranche must independently meet its venue's rules. Binance Spot's filter documentation specifies price ticks, quantity steps and minimum notional checks. A holding large enough for one valid exit can become several invalid orders when split. Validate each rounded tranche and the final residual using the actual symbol filters. Rounding every portion down can leave an extra remainder even when the intended weights total 100%.

Track cost as each planned portion leaves

Under the example's weighted-average convention, each sold ABC consumes 100.10 USDT of acquisition cost. Selling at a profit does not lower the allocated acquisition cost per remaining unit.

Confirmed ladder stateAcquisition cost allocated to that saleRealized result from that saleCumulative realized resultABC remainingCost attached to remaining ABC
First exit fully filled400.400+7.192+7.1926600.600
Second exit fully filled300.300+14.385+21.5773300.300
Third exit fully filled300.300+29.370+50.94700.000

For the first sale, 407.592 net receipts − 400.400 allocated cost = 7.192 USDT realized gain. The cost bridge after two sales is 700.700 allocated to sold units + 300.300 retained = 1,001.000 original cost.

Cash still to recover is a separate figure. After the first two exits, net receipts are 722.277 USDT, leaving 1,001 − 722.277 = 278.723 USDT of the original outlay unrecovered. Remaining inventory cost is 300.300, not 278.723. Their difference is the 21.577 already realized. Subtracting those realized gains from inventory cost and then adding them again to total PnL would double count them.

If all three targets fill as assumed, the completed net gain is 1,051.947 − 1,001 = 50.947 USDT, about 5.09% of fee-inclusive acquisition cost. The highest target's 10% price increase does not become a 10% return on every unit. The quantity-weighted sale price is 0.40 × 102 + 0.30 × 105 + 0.30 × 110 = 105.30, a 5.30% gross increase over the gross average entry before fees.

Value the unfinished ladder at the reporting cutoff

Now take a different branch: the first two exits fill, the third remains unfilled, and ABC is marked at 90 USDT at the reporting cutoff. The remaining three ABC are worth 270 USDT.

The unfinished deal has:

  • Realized result: +21.577 USDT.
  • Unrealized result: 270 − 300.300 = −30.300 USDT.
  • Combined marked result: 21.577 − 30.300 = −8.723 USDT.

The independent check is 722.277 net sale receipts + 270 marked inventory − 1,001 acquisition cost = −8.723. This mark excludes a future exit fee and any difference between the valuation price and executable proceeds. It is not a completed sale.

Two profitable tranches can therefore sit beside an overall marked loss. Keep a valuation timestamp, price source and remaining quantity with the result; the open-deal inventory report extends that reconciliation across several deals. If money is subsequently added to the bot, use the external-deposits performance guide to separate new principal from trading gains.

Define revisions before new inventory arrives

A DCA strategy may still have averaging orders outstanding when its first exit fills. Decide whether those purchases are disabled, remain active, or require a new exit-plan version. Each choice changes possible exposure.

Suppose the first four ABC leave and a later purchase adds two more. The deal now holds eight ABC. Reapplying the original 40/30/30 percentages to the expanded cumulative acquisition quantity can accidentally schedule the first tranche again. A safer audit record identifies completed tranche quantities, newly acquired inventory and the exact unsold quantity assigned to every revised target.

Reconcile final fill state before changing orders, then record a revision with its inventory cutoff and calculation basis. The open-deal settings guide examines when configuration changes apply to an existing deal. A saved setting alone does not prove that every working exit now follows it.

For execution evidence, Binance's execution report schema distinguishes order quantity, last executed quantity, cumulative filled quantity, trade ID and commission asset. Those fields help separate a planned tranche from its actual executions. Preserve unique fills and avoid treating repeated cumulative updates as additional sales.

Validate the residual policy before evaluating results

Walk the plan through four paths: every level fills; only the first fills; an intermediate tranche partly fills; and a new purchase arrives after an exit. For each path, require conservation of acquired units, cost and cash, with any base-paid fees or transfers separately recorded.

Also test a jump across several targets. Do not infer a neat first-to-third execution sequence from crossed price levels; use the actual order placement, acceptance and fill timestamps.

Check that independently working sell instructions do not collectively exceed attributed inventory. Confirm what a protective stop cancels or leaves active, and how a replacement reconciles an old order's final fills. Define what happens to quantity below venue minimums instead of declaring completion by label.

If the final portion uses a trail, treat that as a separate rule with its own activation and execution sequence; the trailing take profit guide covers that behavior. A ladder alone supplies no protection against a decline before its first target, and an early sale leaves the unsold quantity exposed.

Start the review with one reconciled holding and write the actual quantity beside every proposed exit. Accept the ladder only when its unsold remainder and full-deal result can be reconstructed at every stopping point.

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.