Pular para o conteúdo principal

Modelagem de Patrimônio

A modelagem de patrimônio da Rica é o conjunto de conceitos, estruturas de dados e regras de cálculo que permite ao planejador financeiro projetar a trajetória da riqueza de um cliente ao longo da vida — desde hoje até a expectativa de vida informada.

Este documento é a referência definitiva sobre como o patrimônio é representado, calculado e exibido dentro da plataforma.


Visão Geral

O patrimônio de uma pessoa é composto por ativos (o que ela tem) e passivos (o que ela deve). A diferença entre os dois é o patrimônio líquido.

A Rica vai além do inventário estático: ela projeta como esse patrimônio evolui ao longo do tempo, cruzando com o custo de vida da pessoa, suas contribuições mensais e os rendimentos esperados de cada ativo. O resultado é uma curva de vida patrimonial — uma visualização que responde à pergunta central do planejamento financeiro:

"Com o que tenho hoje e com o que vou continuar fazendo, quando vou atingir a independência financeira — e o meu dinheiro vai durar até o fim da vida?"


Ativos Patrimoniais

Um Ativo Patrimonial é qualquer bem ou direito que compõe o patrimônio. A Rica suporta sete classes de ativos, cada uma com comportamento de projeção específico.

Classes de Ativos

ClasseDescriçãoComportamento de Projeção
FINANCEIROInvestimentos, CDBs, fundos, açõesJuros compostos + aportes mensais
IMOVELImóveis residenciais ou comerciaisValorização anual + renda de aluguel
VEICULOAutomóveis, motos, embarcaçõesDepreciação anual
PREVIDENCIAPGBL, VGBL, fundos de pensãoAcumulação com contribuições até aposentadoria
EMPRESARIALParticipações societáriasValorização baseada em múltiplo de faturamento
PROTECAOSeguros de vida e residencialNão soma ao patrimônio; rastreia cobertura disponível
OUTROArte, coleções, outrosSem projeção automática

Campos para Projeção

Além dos campos cadastrais, cada ativo possui campos específicos que alimentam o motor de cálculo:

CampoTipoAplicável aDescrição
taxaRendimentoMensalEsperadaDecimalFINANCEIRO, PREVIDENCIATaxa de rendimento mensal (ex: 0.008 = 0,8% a.m.)
taxaValorizacaoAnualEsperadaDecimalIMOVEL, EMPRESARIAL, VEICULOTaxa de valorização/depreciação anual
rendaMensalGeradaDecimalIMOVEL, EMPRESARIALRenda passiva gerada mensalmente
aporteMensalRecorrenteDecimalFINANCEIRO, PREVIDENCIAContribuição mensal que o cliente faz
crescimentoAporteMensalAnualDecimalFINANCEIRO, PREVIDENCIACrescimento anual do aporte
dataFimAporteDataFINANCEIRO, PREVIDENCIAQuando os aportes param (ex: data de aposentadoria)
incluirNaProjecaoBooleanTodosSe o ativo participa do motor de cálculo

Exemplo de Ativo Financeiro com Projeção

{
"nome": "CDB Banco XP",
"classeAtivo": "FINANCEIRO",
"valorAtual": 80000.00,
"taxaRendimentoMensalEsperada": 0.008,
"aporteMensalRecorrente": 1500.00,
"crescimentoAporteMensalAnual": 0.05,
"dataFimAporte": "2053-01-15",
"incluirNaProjecao": true
}

Por que dataFimAporte? O cliente para de contribuir na aposentadoria. Sem esse campo, o motor continuaria somando aportes mesmo após os 65 anos, distorcendo completamente a curva pós-aposentadoria.


Passivos Patrimoniais

Um Passivo Patrimonial é uma obrigação financeira: dívidas, financiamentos ou custos recorrentes que reduzem o patrimônio líquido e consomem caixa mensalmente.

Categorias de Passivos

CategoriaDescriçãoExemplo
FINANCIAMENTO_IMOVELFinanciamento imobiliárioFinanciamento da casa própria
FINANCIAMENTO_VEICULOFinanciamento de veículoCarro parcelado
EMPRESTIMO_PESSOALEmpréstimo pessoal ou consignadoCrédito pessoal no banco
CARTAO_CREDITODívida de cartãoFatura parcelada
CUSTO_RECORRENTEDespesa fixa com prazoMensalidade escola, plano

Sistemas de Amortização

Para financiamentos, a Rica suporta dois sistemas:

SistemaComo funcionaQuando usar
SACParcelas decrescentes; amortização fixa, juros caemFinanciamentos imobiliários CEF/BB
PRICEParcelas fixas; amortização cresce, juros caemMaioria dos financiamentos bancários

Campos de Passivo para Projeção:

CampoTipoDescrição
saldoDevedorDecimalSaldo atual da dívida
taxaJurosMensalDecimalTaxa de juros mensal
prazoTotalMesesIntegerPrazo total do financiamento
sistemaAmortizacaoEnumSAC ou PRICE
dataInicioDataData de início do contrato
ativoPatrimonialIdStringAtivo vinculado (ex: imóvel financiado)

Exemplo de Passivo — Financiamento SAC

{
"nome": "Financiamento Apartamento",
"categoriaPassivo": "FINANCIAMENTO_IMOVEL",
"ativoPatrimonialId": "imovel-001",
"saldoDevedor": 350000.00,
"taxaJurosMensal": 0.008,
"prazoTotalMeses": 240,
"sistemaAmortizacao": "SAC",
"dataInicio": "2020-01-01"
}

Relacionamento entre Ativos e Passivos

Um passivo pode estar vinculado a um ativo específico (ativoPatrimonialId). Isso é fundamental para calcular o patrimônio líquido real de cada bem.

Exemplo prático:

  • Apartamento (IMOVEL): R$ 800.000
  • Financiamento vinculado: saldo devedor R$ 350.000
  • Patrimônio líquido do imóvel: R$ 450.000

O motor usa essa relação para calcular o patrimonioLiquido corretamente.


Planejamento de Patrimônio

O Planejamento é o único objeto persistido nessa modelagem. Ele armazena os parâmetros que o cliente e o planejador definem juntos — não armazena a curva em si.

Por que os Ativos são Referências, não Cópias?

Um decisão central da arquitetura: o Planejamento armazena apenas IDs dos ativos e passivos — não uma cópia dos valores deles.

Benefício principal: quando o planejador atualiza o valor do apartamento de R$ 800.000 para R$ 950.000, todos os planejamentos que referenciam esse ativo automaticamente recalculam com o valor novo. Não há risco de inconsistência entre o cadastro e o planejamento.

Trade-off aceito: se um ativo for excluído, o planejamento precisa ser atualizado manualmente. Esse cenário é raro e preferível ao problema de dados "stale" em cópias.


A Curva Nunca é Persistida

Decisão de arquitetura fundamental: a curva de patrimônio (ResultadoCurvaPatrimonio) é sempre calculada sob demanda e nunca gravada no banco de dados.

Por quê?

  1. Interatividade: o planejador altera um slider (taxa de retorno, custo de vida) e a curva precisa redesenhar em tempo real — impossível se houvesse um round-trip de gravação + leitura.
  2. Sem desatualização: se uma curva fosse persistida, ela ficaria desatualizada assim que qualquer ativo fosse atualizado. A regra "curva = parâmetros aplicados hoje" elimina esse problema por definição.
  3. Custo de storage: uma curva completa (52 pontos × 3 modos × todos os campos) teria dezenas de KB por cálculo. Para um usuário que ajusta 10 parâmetros numa sessão, isso seria 10 gravações desnecessárias.
  4. Simplicidade: o motor é uma função pura — entrada entra, saída sai, sem efeitos colaterais. Fácil de testar, fácil de auditar.

Os Três Modos de Independência Financeira

A Rica calcula três curvas simultaneamente, representando três estratégias diferentes para a fase pós-aposentadoria:

ModoNomeEstratégiaPatrimônio Necessário
RENDAViver dos rendimentosNunca tocar no principal; viver apenas dos juros/dividendosMaior (mais conservador)
CONSUMO_PARCIALConsumir parcialmentePreservar um percentual configurável do patrimônioIntermediário
CONSUMO_TOTALConsumir o principalZerar o patrimônio exatamente na data da expectativa de vidaMenor (mais arrojado)

Por Que Três Modos Simultâneos?

O motor poderia calcular um modo de cada vez — mas isso obrigaria três chamadas de API para mostrar as três curvas. A decisão foi calcular os três em uma única chamada porque:

  1. Os dados de entrada são os mesmos para os três modos.
  2. Boa parte do cálculo é compartilhada (projeção de ativos, amortização de passivos).
  3. O frontend pode fazer toggle entre os modos sem novas chamadas — experiência instantânea.

Ponto da Curva — PontoCurva

Cada posição na curva é representada por um PontoCurva, calculado para cada ano de vida da pessoa.

CampoTipoDescrição
anoIntegerAno calendário
idadeIntegerIdade da pessoa nesse ponto
patrimonioTotalDecimalSoma bruta de todos os ativos
patrimonioLiquidoDecimalPatrimônio total menos saldo de passivos
patrimonioNecessarioDecimalMeta para independência naquele modo
rendaPassivaMensalDecimalRenda mensal gerada pelos ativos
custoVidaMensalDecimalCusto de vida projetado (com inflação)
contribuicaoMensalDecimalAporte mensal projetado (pré-aposentadoria)
protecaoNecessariaDecimalCobertura de seguro necessária
protecaoAtivaDecimalCobertura de seguro disponível atualmente
protecaoInsuficienteBooleantrue se proteção ativa < necessária
independenciaAtingidaBooleantrue quando patrimônio ≥ meta
breakdownBreakdownPatrimonioComposição por classe de ativo

Breakdown do Patrimônio

O BreakdownPatrimonio decompõe o patrimônio total de cada ponto em classes:

{
"financeiro": 4560000.00,
"imoveis": 2300000.00,
"previdencia": 380000.00,
"empresarial": 0.00,
"veiculos": 1800.00
}

O Motor de Cálculo

O MotorCurvaPatrimonio é o coração da modelagem. Ele itera ano a ano, do ano atual até a idadeExpectativaVida, projetando cada ativo e passivo e acumulando os resultados.

Arquitetura — Strategy Pattern

Cada classe de ativo e categoria de passivo tem um projetor dedicado, implementando uma interface comum. Isso garante que adicionar uma nova classe de ativo não exija alterar o motor principal.

Fluxo de Cálculo Ano a Ano

Cálculo de Patrimônio Necessário por Modo

Modo RENDA — Nunca tocar no principal:

patrimonioNecessario = custoVidaMensal × 12 / taxaRetornoReal

O patrimônio precisa ser grande o suficiente para que os rendimentos anuais cubram o custo de vida. É o modo mais conservador.

Modo CONSUMO_TOTAL — Consumir tudo:

patrimonioNecessario = PV(custoVidaMensal × 12, anos_restantes, taxaRetornoReal)

Valor presente de uma série de pagamentos anuais que zera o patrimônio na data da expectativa de vida. Modo mais arrojado.

Modo CONSUMO_PARCIAL — Preservar uma fatia:

patrimonioNecessario = PV(parte_consumida) + percentualPreservar × patrimonioHoje_inflacionado

Hibrido: a pessoa consome parte do principal mas deixa um percentual configurável como herança ou reserva. Modo intermediário.


Proteção ao Longo da Vida

A proteção (seguros) é tratada de forma separada dos demais ativos. Um ativo da classe PROTECAO não soma ao patrimônio — ele rastreia cobertura disponível.

Por que separar? Um seguro de vida de R$ 2 milhões não é "riqueza" no sentido patrimonial. É uma proteção contingencial: só tem valor se o sinistro ocorrer. Incluí-lo no patrimônio criaria uma distorção grave nas projeções.

Cálculo da Proteção Necessária

Em cada ponto da curva:

protecaoNecessaria = MAX(0, patrimonioNecessario - patrimonioLiquido) + saldoTotalPassivos

Interpretação: se o patrimônio atual está abaixo da meta, a diferença precisaria ser coberta por um seguro para que a família mantivesse o padrão de vida caso a pessoa falecesse hoje. O saldo de passivos é somado porque as dívidas também precisam ser quitadas.


Resultado da Curva

O ResultadoCurvaPatrimonio retornado pelo motor contém:

CampoTipoDescrição
curvaRendaPontoCurva[]Trajetória no modo RENDA
curvaConsumoTotalPontoCurva[]Trajetória no modo CONSUMO_TOTAL
curvaConsumoParcialPontoCurva[]Trajetória no modo CONSUMO_PARCIAL
metaMetaIndependenciaFinanceiraMetas consolidadas dos três modos

MetaIndependenciaFinanceira

CampoTipoDescrição
patrimonioNecessarioRendaDecimalMeta no modo RENDA
patrimonioNecessarioConsumoTotalDecimalMeta no modo CONSUMO_TOTAL
patrimonioNecessarioConsumoParcialDecimalMeta no modo CONSUMO_PARCIAL
dataProjetadaRendaStringData prevista para atingir IF (RENDA)
dataProjetadaConsumoTotalStringData prevista para atingir IF (CONSUMO_TOTAL)
dataProjetadaConsumoParcialStringData prevista para atingir IF (CONSUMO_PARCIAL)
idadeIndependenciaRendaIntegerIdade na data projetada (RENDA)
idadeIndependenciaConsumoTotalIntegerIdade na data projetada (CONSUMO_TOTAL)
idadeIndependenciaConsumoParcialIntegerIdade na data projetada (CONSUMO_PARCIAL)

Exemplo Completo — Caso Fictício

Perfil: Ana, 38 anos, quer se aposentar aos 65 e tem expectativa de vida de 90 anos.

Patrimônio atual: R$ 1.500.000

  • Casa própria: R$ 800.000 (valorização 4% a.a., moradia principal)
  • Carro: R$ 100.000 (depreciação 15% a.a.)
  • Investimentos: R$ 600.000 (rendimento 4% a.a. real, aporte R$ 5.000/mês até 65 anos)

Parâmetros:

  • Custo de vida na aposentadoria: R$ 32.000/mês
  • Inflação projetada: 2% a.a.

Como o motor processa:

Pré-aposentadoria (38 → 64 anos):
Cada ano:
financeiro = financeiro × 1.04 + (aporte × 12)
imovel = imovel × 1.04
veiculo = veiculo × 0.85
contribuicao = 5.000/mês (aporte mensal)
custo de vida = coberto pelo salário, não sai dos ativos

Pós-aposentadoria (65 → 90 anos):
Cada ano:
financeiro = MAX(0, financeiro × 1.04 - retirada_anual)
retirada_anual = 32.000 × 12 × 1.02^(anos_desde_aposentadoria)
imovel continua valorizando (mas é ilíquido — moradia)
veiculo ≈ zero (depreciado)

Resultado projetado:

EventoIdadePatrimônio Financeiro
Hoje38R$ 600.000
Aposentadoria65R$ 4.560.000
Início da retirada65R$ 384.000/ano
Retorno anual (4%)65R$ 182.000/ano
Déficit anual65R$ 202.000/ano
Esgotamento~87R$ 0
Atenção

Com 4% de retorno real, os investimentos de Ana se esgotam aos ~87 anos — 3 anos antes da expectativa de vida de 90. O gráfico deixa isso visível imediatamente. A solução pode ser aumentar o aporte mensal (de R$ 5.000 para R$ 7.000) ou aceitar um retorno maior com mais risco.

O papel do taxa de retorno

A taxa de retorno é o principal alavancador da independência financeira. No modo RENDA, com 6% de retorno real, o patrimônio financeiro na aposentadoria já sustenta R$ 32.000/mês indefinidamente (6% × R$ 6,5M = R$ 390.000/ano > R$ 384.000/ano de gasto). A diferença entre 4% e 6% de retorno real pode significar 10 anos de diferença na data de IF.


Eventos Planejados

O EventoPatrimonio permite modelar eventos futuros que alterarão o patrimônio:

TipoDescriçãoEfeito no Motor
COMPRA_ATIVOAquisição de novo bemAdiciona ativo ao patrimônio na data
VENDA_ATIVOAlienação de um bemRemove ativo do patrimônio na data
APORTE_EXTRAAporte pontualSoma ao financeiro na data
MUDANCA_CONTRIBUICAOMudança no aporte mensalSubstitui contribuicaoMensalAtual a partir da data
MUDANCA_ESTILO_VIDAMudança no custo de vidaSubstitui custoEstiloVidaMensal a partir da data
INICIO_RENDA_PASSIVAInício de renda recorrenteAdiciona renda mensal ao fluxo
QUITACAO_ANTECIPADAQuitação de passivoRemove passivo e libera caixa mensal
HERANCARecebimento de herançaSoma ao financeiro na data

Exemplo:

{
"tipo": "APORTE_EXTRA",
"dataPrevista": "2030-06-01",
"valor": 200000.00,
"descricao": "Venda do carro e reinvestimento"
}

Endpoints da API

CalcularCurvaPatrimonio

Endpoint principal de cálculo. Recebe ParametrosCalculo com os IDs dos ativos/passivos, busca os dados no MongoDB, roda o motor e retorna o resultado.

POST /api/CalcularCurvaPatrimonio
Body: ParametrosCalculo
Response: ResultadoCurvaPatrimonio

O ParametrosCalculo serve tanto como payload do endpoint quanto como objeto armazenado dentro do Planejamento. Essa reutilização é intencional: evita dois modelos quase idênticos e garante que um planejamento salvo pode ser re-executado enviando planejamento.parametros diretamente para o endpoint.

Endpoints de Gestão de Planejamentos

EndpointMétodoDescrição
NovoPlanejamentoPOSTCria um planejamento (persiste parâmetros)
ListarPlanejamentosPessoaGETLista planejamentos de uma pessoa
AtualizarPlanejamentoPUTAtualiza parâmetros de um planejamento
RemoverPlanejamentoDELETERemove um planejamento

Visualização — CurvaPatrimonioComponent

O componente Angular responsável por exibir a curva é o CurvaPatrimonioComponent, localizado em apps/rica/src/app/components/curva-patrimonio/.

O Que é Exibido

Gráfico principal (Chart.js):

  • Linha azul — Liquidez dos ativos: evolução dos ativos financeiros líquidos ao longo do tempo
  • Linha laranja tracejada — Gasto passivo anual: R$ 0 enquanto trabalha (salário cobre), R$ 32.000 × 12 após a aposentadoria (cresce com inflação)
  • Linha vertical cinza — Aposentadoria: marcação visual do ponto de transição aos 65 anos

Cards de ativos (estilo conquistas):

  • Um card por ativo, mostrando valor atual, taxa, participação no patrimônio total
  • Slider interativo que redesenha o gráfico em tempo real

Decisão: Cálculo no Frontend vs. Backend

Para o gráfico interativo com sliders, o cálculo é feito no próprio componente TypeScript — não há chamada ao backend a cada movimento do slider. A lógica reproduz uma versão simplificada do motor C# diretamente em TypeScript.

Por quê?

  • Latência zero na interação (sem round-trip de rede)
  • O motor C# é stateless e puro — fácil de replicar em TS para o caso simplificado
  • Quando o planejador quiser um cálculo preciso com todos os passivos reais, usa o endpoint CalcularCurvaPatrimonio

Diagrama Completo de Relacionamentos


Resumo das Decisões de Arquitetura

DecisãoAlternativa ConsideradaJustificativa
Curva calculada sob demanda, nunca persistidaPersistir a curva no MongoDBInteratividade, sem desatualização, custo de storage, motor puro
Três modos calculados em uma chamadaUma chamada por modoDados compartilhados, toggle no frontend sem latência
Ativos referenciados por ID no planejamentoCopiar snapshot dos ativosAtualização automática, sem inconsistência
ParametrosCalculo reutilizado como payloadDTO separado para o endpointElimina duplicação, planejamento re-executável diretamente
Proteção separada do patrimônioSomar cobertura ao patrimônio totalSeguro não é riqueza; é proteção contingencial
Strategy pattern para projetoresSwitch/case no motorExtensibilidade; adicionar nova classe não muda o motor
Motor stateless (função pura)Motor com estado/bancoTestabilidade, auditabilidade, sem efeitos colaterais
dataNascimento vem da PessoaDuplicar em PlanejamentoFonte única da verdade; evita divergência

Veja Também