← Production← Produção

Amortization rules are data, not code.

Regras de amortização são dado, não código.

Projecting when a fund will have cash for redemptions means projecting when every receivable in it will pay — and that depends on settlement terms that vary by asset and change over time. This engine keeps those terms in a spreadsheet, not in an if/else chain.

Projetar quando um fundo terá caixa para resgates significa projetar quando cada recebível dentro dele vai pagar — e isso depende de termos de liquidação que variam por ativo e mudam ao longo do tempo. Este motor mantém esses termos numa planilha, não numa cadeia de if/else.

Every receivable settles on its own terms.

Cada recebível se liquida nos seus próprios termos.

A payroll-deductible receivable, a trade receivable, and a structured note don't amortize the same way — some pay monthly on a fixed schedule, some get bought back early, some sit in a senior/subordinated waterfall where one class only gets paid after another is whole. Hardcoding that logic means every new asset type is a code change reviewed and deployed under time pressure. This engine instead reads the settlement rule for each asset from a table, so adding a new rule is an edit to a spreadsheet an analyst can make.

Um recebível consignado, um recebível comercial e uma nota estruturada não amortizam do mesmo jeito — alguns pagam mensalmente num cronograma fixo, alguns são recomprados antecipadamente, alguns ficam numa cascata sênior/subordinada em que uma classe só recebe depois que a outra está integralizada. Codificar essa lógica no código significa que todo tipo de ativo novo é uma mudança de código revisada e implantada sob pressão de tempo. Este motor, em vez disso, lê a regra de liquidação de cada ativo numa tabela, então adicionar uma regra nova é uma edição de planilha que um analista pode fazer.

Rule storage
Onde vivem as regras
Spreadsheet
Planilha
Settlement rule per asset — editable without a deploy.
Regra de liquidação por ativo — editável sem deploy.
IRR
Root-finding
Busca de raiz
scipy.optimize (Brent, Newton) over the discounted cash-flow schedule.
scipy.optimize (Brent, Newton) sobre o cronograma de fluxo de caixa descontado.
Pre-flight gate
Checagem prévia
Before 10am
Antes das 10h
An audit DAG flags assets with no matching rule before the liquidity report runs.
Uma DAG de auditoria sinaliza ativos sem regra correspondente antes do relatório de liquidez rodar.

From a rules table to a cash-flow projection

De uma tabela de regras a uma projeção de fluxo de caixa

liquidity engine motor de liquidez inputsentradas enginemotor outputsaída

What the engine actually computes

O que o motor de fato calcula

01

A projected schedule, per asset

Um cronograma projetado, por ativo

Each receivable's settlement rule (fixed schedule, early buyback, other) is looked up, applied against a business-day calendar built in-house, and turned into a stream of expected future cash dates and amounts.

A regra de liquidação de cada recebível (cronograma fixo, recompra antecipada, outra) é consultada, aplicada contra um calendário de dias úteis construído internamente, e transformada num fluxo de datas e valores de caixa futuros esperados.

02

A senior/subordinated waterfall

Uma cascata sênior/subordinada

Projected inflows are allocated across share classes in priority order, so the liability side of the balance sheet reflects the fund's actual capital structure, not just a single blended number.

As entradas projetadas são alocadas entre as classes de cota em ordem de prioridade, de modo que o lado do passivo reflita a estrutura de capital real do fundo, não só um número único combinado.

03

An internal rate of return

Uma taxa interna de retorno

For flows that need a yield, not just a total, the schedule is fed to a numerical root-finder rather than an analytical formula — the schedules are irregular enough (early buybacks, partial payments) that a closed form isn't reliable.

Para fluxos que precisam de uma taxa, não só um total, o cronograma é passado a um solver numérico de raiz em vez de uma fórmula analítica — os cronogramas são irregulares o bastante (recompras antecipadas, pagamentos parciais) para que uma forma fechada não seja confiável.

04

A sensitivity matrix

Uma matriz de sensibilidade

The same projection re-run under stress assumptions, so "will there be cash" comes with a margin, not just a point estimate.

A mesma projeção rerrodada sob premissas de estresse, para que "vai ter caixa" venha com uma margem, não só uma estimativa pontual.

Engineering decision

Decisão de engenharia

Turn a silent gap into a 9:50am alert Transformar uma lacuna silenciosa num alerta às 9h50

An asset with no matching settlement rule doesn't fail loudly — it just gets excluded, or falls back to a default that may not fit. Rather than let that surface only when a number looks wrong days later, a dedicated audit task runs right before the liquidity report, ten minutes before its 10am deadline, and checks every asset in the current position against the rules table. Anything uncovered is flagged then, while there's still time to add a rule or make a documented judgment call — not after the report has already gone out.

Um ativo sem regra de liquidação correspondente não falha de forma barulhenta — ele simplesmente fica de fora, ou cai num padrão que pode não se encaixar. Em vez de deixar isso aparecer só quando um número parece errado dias depois, uma task de auditoria dedicada roda logo antes do relatório de liquidez, dez minutos antes do prazo das 10h, e checa todo ativo na posição atual contra a tabela de regras. O que não está coberto é sinalizado ali, enquanto ainda dá tempo de adicionar uma regra ou tomar uma decisão documentada — não depois que o relatório já saiu.

Stack

Stack

IRRscipy.optimize · numpy-financial
RulesRegrasopenpyxl (table-driven)
CalendarCalendárioin-house business daysdias úteis próprios
ETLpandas