finmath-engine
Version:
Motor de cálculos financeiros de alta precisão para o mercado brasileiro
78 lines • 2.18 kB
TypeScript
/**
* CET (Custo Efetivo Total) - Versão Básica
* Sprint 4 - H15 (Parte 3)
*
* Escopo MVP: CET com tarifas t0 apenas (sem IOF/seguros)
* Referência: Guia CET — Source of Truth v1.0
*/
import { Decimal } from "decimal.js";
import { IRRResult } from "../irr/brent";
/**
* Entrada para cálculo de CET básico
*/
export interface CETBasicInput {
/** Valor presente (crédito liberado) */
pv: Decimal;
/** Cronograma de parcelas (PMT) */
schedule: Decimal[];
/** Tarifas cobradas no tempo 0 */
feesT0?: Decimal[];
/** Base anual para conversão (padrão: 12 meses) */
baseAnnual?: number;
}
/**
* Resultado do cálculo de CET
*/
export interface CETResult {
/** IRR mensal encontrado */
irrMonthly: Decimal;
/** CET anual equivalente */
cetAnnual: Decimal;
/** Fluxo de caixa usado no cálculo */
cashflows: Decimal[];
/** Breakdown dos componentes */
breakdown: {
/** Valor presente */
pv: Decimal;
/** Total de tarifas t0 */
totalFeesT0: Decimal;
/** Entrada líquida do cliente (t=0) */
netInflow: Decimal;
};
/** Resultado detalhado do solver IRR */
irrResult: IRRResult;
}
/**
* Calcula CET básico usando solver de Brent
*
* Fórmula (Guia CET - SoT §4):
* 1. CF[0] = +PV - tarifas_t0
* 2. CF[k] = -PMT[k] (k=1..n)
* 3. IRR_m = solveIRR(CF, tolerance=1e-8)
* 4. CET_aa = (1 + IRR_m)^base - 1
*
* @param input - Parâmetros do cálculo
* @returns Resultado com IRR mensal e CET anual
*
* @example
* ```typescript
* const result = calculateCETBasic({
* pv: new Decimal('10000'),
* schedule: [
* new Decimal('946.56'), // PMT_1
* new Decimal('946.56'), // PMT_2
* // ... 12 parcelas
* ],
* feesT0: [new Decimal('85')], // Tarifa de cadastro
* baseAnnual: 12
* });
*
* console.log(result.cetAnnual.toNumber()); // 0.3367 (33.67% a.a.)
* ```
*/
export declare function calculateCETBasic(input: CETBasicInput): CETResult;
/**
* Helper: converte CET para porcentagem formatada
*/
export declare function formatCET(cet: Decimal, decimals?: number): string;
//# sourceMappingURL=basic.d.ts.map