@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
JavaScript
;
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,
}));