UNPKG

@railpath/finance-toolkit

Version:

Production-ready finance library for portfolio construction, risk analytics, quantitative metrics, and ML-based regime detection

36 lines (35 loc) 1.16 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.MoneyWeightedReturnOptionsSchema = void 0; const zod_1 = require("zod"); const MoneyWeightedReturnOptionsBaseSchema = zod_1.z.object({ /** * Array of cash flows (positive for inflows, negative for outflows) */ cashFlows: zod_1.z.array(zod_1.z.number()).min(2), /** * Array of dates corresponding to each cash flow */ dates: zod_1.z.array(zod_1.z.date()).min(2), /** * Final portfolio value */ finalValue: zod_1.z.number().positive(), /** * Initial portfolio value (optional, defaults to 0) */ initialValue: zod_1.z.number().nonnegative().default(0), /** * Maximum number of iterations for IRR calculation */ maxIterations: zod_1.z.number().positive().optional(), /** * Tolerance for IRR convergence */ tolerance: zod_1.z.number().positive().optional(), }); exports.MoneyWeightedReturnOptionsSchema = MoneyWeightedReturnOptionsBaseSchema.transform((data) => ({ ...data, maxIterations: data.maxIterations ?? 100, tolerance: data.tolerance ?? 1e-6, }));