UNPKG

finmath-engine

Version:

Motor de cálculos financeiros de alta precisão para o mercado brasileiro

58 lines 1.88 kB
/** * IRR - Solver de Brent (Implementação Científica) * Baseado em: Brent (1973) - Algorithms for Minimization Without Derivatives * Sprint 4 - H15 (Parte 2) */ import { Decimal } from "decimal.js"; /** * Resultado do solver de IRR */ export interface IRRResult { /** IRR encontrado (null se não convergiu) */ irr: Decimal | null; /** Se convergiu dentro da tolerância */ converged: boolean; /** Método usado ('brent' ou 'bisection') */ method: "brent" | "bisection"; /** Diagnósticos adicionais */ diagnostics?: { /** Múltiplas raízes possíveis (>1 mudança de sinal) */ multipleRoots?: boolean; /** Sem mudança de sinal (IRR não existe) */ noSignChange?: boolean; /** NPV final após convergência */ finalNPV?: Decimal; /** Iterações usadas */ iterations?: number; }; } /** * Opções para solver de IRR */ export interface IRROptions { /** Chute inicial (padrão: 0.1 = 10%) */ guess?: Decimal; /** Intervalo de busca (padrão: [-0.99, 3]) */ range?: { lo: Decimal; hi: Decimal; }; /** Tolerância (padrão: 1e-8) */ tolerance?: Decimal; /** Máximo de iterações (padrão: 100) */ maxIterations?: number; /** Forçar uso de bissecção ao invés de Brent */ forceBisection?: boolean; } /** * Resolve IRR usando método de Brent (ou bissecção) */ export declare function solveIRR(cashflows: Decimal[], options?: IRROptions): IRRResult; /** * Converte IRR de periodicidade para anual * @param irrPeriodic - IRR no período (ex: 0.025 = 2.5% ao mês) * @param periodsPerYear - Períodos por ano (ex: 12 para mensal) * @returns IRR anual equivalente */ export declare function convertToAnnual(irrPeriodic: Decimal, periodsPerYear: number): Decimal; //# sourceMappingURL=brent.d.ts.map