36 lines
902 B
TypeScript
36 lines
902 B
TypeScript
import { z } from "zod";
|
|
|
|
export const strategyStateSchema = z.enum([
|
|
"draft",
|
|
"candidate",
|
|
"dry-run",
|
|
"approved-for-live",
|
|
"archived"
|
|
]);
|
|
|
|
export const strategyDefinitionSchema = z.object({
|
|
id: z.string().min(1),
|
|
version: z.number().int().positive(),
|
|
name: z.string().min(1),
|
|
state: strategyStateSchema,
|
|
agentProfile: z.object({
|
|
signal: z.string().min(1),
|
|
risk: z.string().min(1),
|
|
evaluator: z.string().min(1),
|
|
optimizer: z.string().min(1)
|
|
}),
|
|
featureConfig: z.object({
|
|
windows: z.array(z.string().min(1)).min(1)
|
|
}),
|
|
riskConfig: z.object({
|
|
minConfidence: z.number().min(0).max(1)
|
|
}),
|
|
scoringConfig: z.object({
|
|
objective: z.literal("risk-adjusted-return")
|
|
}),
|
|
createdAt: z.string().datetime()
|
|
});
|
|
|
|
export type StrategyState = z.infer<typeof strategyStateSchema>;
|
|
export type StrategyDefinition = z.infer<typeof strategyDefinitionSchema>;
|