UNPKG

@railpath/finance-toolkit

Version:

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

28 lines (27 loc) 1.09 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.RegimeDetectionOptionsSchema = void 0; const zod_1 = require("zod"); /** * Zod schema for regime detection options */ exports.RegimeDetectionOptionsSchema = zod_1.z.object({ numStates: zod_1.z.number().int().positive().default(3), features: zod_1.z.union([ zod_1.z.literal('default'), zod_1.z.array(zod_1.z.enum(['returns', 'volatility', 'rsi', 'macd', 'ema'])), zod_1.z.array(zod_1.z.array(zod_1.z.number())), ]).default('default'), featureWindow: zod_1.z.number().int().positive().default(20), maxIterations: zod_1.z.number().int().positive().default(100), convergenceTolerance: zod_1.z.number().positive().default(1e-6), stateLabels: zod_1.z.array(zod_1.z.string()).optional(), }).refine((data) => { // If stateLabels provided, length must match numStates if (data.stateLabels && data.stateLabels.length !== data.numStates) { return false; } return true; }, { message: 'stateLabels length must match numStates', });