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