diff --git a/frontend/src/features/models/pages/ModelList.vue b/frontend/src/features/models/pages/ModelList.vue new file mode 100644 index 00000000..99a559b7 --- /dev/null +++ b/frontend/src/features/models/pages/ModelList.vue @@ -0,0 +1,492 @@ + + + + + + + + + + + + + + + + + + + + + {{ model.name }} + + + + + PBO + {{ model.pboDisplay }} + + + DSR + {{ model.dsrDisplay }} + + + Return + {{ model.returnDisplay }} + + + + + + + + + + + + + + + + + + Probability of Backtest Overfit + {{ formatPercentage(detailQuery.data.value?.pbo) }} + Lower is better (≤20%) + + + Daily Sharpe Ratio + {{ formatPercentage(detailQuery.data.value?.dsr) }} + Higher is better (≥95%) + + + Out-of-Sample Error + {{ formatPercentage(detailQuery.data.value?.oos) }} + Lower is better (≤2.5%) + + + + + + + + + Lookback Period + {{ detailQuery.data.value?.configuration?.lookbackPeriod }} days + + + Rebalance Frequency + {{ detailQuery.data.value?.configuration?.rebalanceFrequency }} + + + Risk Limit + {{ detailQuery.data.value?.configuration?.riskLimit }}% + + + Max Positions + {{ detailQuery.data.value?.configuration?.maxPositions }} + + + + + + + + + + + + + + + + 📋 + Select a model to view details + + + + + + + + 🎯 + No models yet + Create your first trading model to get started + + + + + + + + diff --git a/frontend/src/features/models/registry.ts b/frontend/src/features/models/registry.ts index 8971ab60..2fc1c9f0 100644 --- a/frontend/src/features/models/registry.ts +++ b/frontend/src/features/models/registry.ts @@ -3,9 +3,9 @@ * Define all screens in the models feature module */ -import type { KbxScreenDefinition } from '@shared/contracts/kbx-types' +import type { ScreenDefinition } from '@kbx/contracts' -export const modelsListScreen: KbxScreenDefinition = { +export const modelsListScreen: ScreenDefinition = { screenId: 'model-ops.models.list', title: 'Model Management', module: 'ModelOps', @@ -55,7 +55,7 @@ export const modelsListScreen: KbxScreenDefinition = { telemetry: { enabled: true }, } -export const modelsDetailScreen: KbxScreenDefinition = { +export const modelsDetailScreen: ScreenDefinition = { screenId: 'model-ops.models.detail', title: 'Model Details', module: 'ModelOps', @@ -93,4 +93,4 @@ export const modelsDetailScreen: KbxScreenDefinition = { /** * All screens in models module */ -export const modelScreens: KbxScreenDefinition[] = [modelsListScreen, modelsDetailScreen] +export const modelScreens: ScreenDefinition[] = [modelsListScreen, modelsDetailScreen] diff --git a/frontend/src/features/models/types/index.ts b/frontend/src/features/models/types/index.ts new file mode 100644 index 00000000..77e54bbe --- /dev/null +++ b/frontend/src/features/models/types/index.ts @@ -0,0 +1,24 @@ +/** + * Models Feature Types + */ + +export interface Model { + modelId: string + name: string + version: string + description: string + status: 'draft' | 'training' | 'mature' | 'active' | 'retired' + createdAt: string + updatedAt: string + createdBy: string + accuracy: number + sharpeRatio: number + maxDrawdown: number + trades: number +} + +export interface ModelFilter { + search?: string + status?: string + minAccuracy?: number +}
Select a model to view details
Create your first trading model to get started