---
title: "Calculadora de Rebalanceamento de Carteira — quanto comprar e vender"
method: POST
path: "/api/v1/calc/rebalanceamento-carteira"
tags: ["calc", "financas"]
---

# Calculadora de Rebalanceamento de Carteira — quanto comprar e vender

`POST /api/v1/calc/rebalanceamento-carteira`

## Request

- Base URL: `https://api.calculas.com.br`
- URL: `https://api.calculas.com.br/api/v1/calc/rebalanceamento-carteira`
- Auth: HTTP bearer

Compare sua alocação atual com a alvo, veja as ordens de compra/venda que recompõem a carteira com estimativa de IR e custo, e a alternativa sem vender: quantos meses de aporte direcionado.

## Request body

- object
  - `classes` object[], required: Lista de classes alocadas (mín 2, máx 9). Cada item: { classe, valorAtualCents, targetPercent, lucroNaoRealizadoCents? }. Soma dos targetPercent deve ser 100.
    - `classe` 'caixa' | 'rf_pos_fixada' | 'rf_pre_fixada' | 'rf_ipca' | 'acoes_br' | 'acoes_int' | 'fii' | 'multimercado' | 'cripto', required: Classe de ativo: caixa (poupança/conta remunerada), rf_pos_fixada (Selic/CDI), rf_pre_fixada (CDB/LCI pré), rf_ipca (Tesouro IPCA+), acoes_br (ações BR/ETF BOVA11), acoes_int (BDR/ETF IVVB11), fii (fundos imobiliários), multimercado (FIM), cripto (BTC/ETH agregado). Cada classe pode aparecer apenas uma vez.
    - `valorAtualCents` integer, required: Valor atual investido nesta classe em centavos. Ex: R$ 50.000 → 5000000.
    - `targetPercent` number, required: Alocação-alvo desejada desta classe em % (0 a 100). A soma dos targets de todas as classes deve ser exatamente 100.
    - `lucroNaoRealizadoCents` integer: Lucro acumulado não-realizado em centavos (valor atual − custo de aquisição). Usado para estimar o IR de uma venda. Padrão 0 (sem essa informação, a estimativa de IR é o piso). Não pode exceder o valor atual da classe.
  - `custoOperacaoMedioPercent` number: Custo médio total de operação em % por movimentação (corretagem + spread). 0,5% típico para ações; 1-1,5% para FII; 2-3% para previdência migrada. Padrão 0,5.
  - `aportePrevistoMensalCents` integer: Aporte mensal previsto em centavos. Habilita a alternativa "rebalancear sem vender" via aportes direcionados (evita evento tributável). Padrão 0.
  - `aceitaSomenteCompras` boolean: true → nunca recomendar vendas; recompor só com aportes futuros (exige aporte mensal > 0). false → otimizar com vendas quando o desvio justificar.
  - `isencaoMensalUtilizadaCents` integer: Quanto da isenção mensal de R$ 20.000 em vendas de ações na B3 (IN RFB 1.585/2015 art. 59) já foi usado neste mês, em centavos. Padrão 0.
  - `currentDate` string, date-time: ISO-8601 com offset. Default: tempo do servidor. Use pra reprodutibilidade / cache semantico.

## Response `200`

OK

- object
  - `ok` true, required
  - `data` object, required: Resultado dependente da calc — ver schema individual
  - `meta` object

## Other responses

- `422`: Input invalido (Zod parse falhou)
- `500`: Engine error

---

[API](https://skmtc.dev/calculas/apis/contai-api.md) · [All operations](https://skmtc.dev/calculas/apis/contai-api/llms.txt) · [OpenAPI document](https://skmtc.dev/calculas/apis/contai-api/revisions/26a00749292b?raw)
