diff --git a/frontend/src/features/models/pages/ModelDetail.vue b/frontend/src/features/models/pages/ModelDetail.vue new file mode 100644 index 00000000..a18f748a --- /dev/null +++ b/frontend/src/features/models/pages/ModelDetail.vue @@ -0,0 +1,628 @@ + + + + + + + + {{ model.name }} + + Models + / {{ model.name }} + + + + + + + + + + + + + + + Status: + + {{ model.active ? 'Active' : 'Inactive' }} + + + + Phase: + {{ model.phase }} + + + Last Validation: + {{ model.lastValidation }} + + + Created: + {{ model.createdAt }} + + + + Description: + {{ model.description }} + + + + + + Activation Requirements + + + + {{ req.met ? '✓' : '✗' }} + + + {{ req.requirement }} + {{ req.value }} + + + + + + + + Key Metrics + + + PBO + + {{ model.pbo }}% + + Target: ≤ 20% + + + DSR + + {{ model.dsr }}% + + Target: ≥ 95% + + + OOS + + {{ model.oos }}% + + Target: ≤ 2.5% + + + Return (MTD) + + +{{ model.returnMtd }}% + + Month-to-date + + + + + + + Model Lifecycle + + + + {{ phase }} + ✓ + + + + + + + Configuration + + + {{ key.replace(/([A-Z])/g, ' $1').toLowerCase() }}: + {{ value }} + + + + + + + Validation History + + + Date + Phase + PBO + DSR + OOS + Status + + + {{ entry.date }} + {{ entry.phase }} + {{ entry.pbo }}% + {{ entry.dsr }}% + {{ entry.oos }}% + + {{ entry.status }} + + + + + + + + diff --git a/frontend/src/features/models/pages/ModelsList.vue b/frontend/src/features/models/pages/ModelsList.vue new file mode 100644 index 00000000..e2425d06 --- /dev/null +++ b/frontend/src/features/models/pages/ModelsList.vue @@ -0,0 +1,264 @@ + + + + + + + + + + + + + + + + + + + + All Phases + Freeze + Mature + Score + Diagnose + Hypothesis + Challenger + Validate + Review + + + All Status + Active + Inactive + + + + + + + + handleRowClick(modelId)" + /> + + + + + + diff --git a/frontend/src/features/shadow-run/pages/ShadowRunDetail.vue b/frontend/src/features/shadow-run/pages/ShadowRunDetail.vue new file mode 100644 index 00000000..618e26b2 --- /dev/null +++ b/frontend/src/features/shadow-run/pages/ShadowRunDetail.vue @@ -0,0 +1,421 @@ + + + + + + + + {{ run.modelName }} + + Shadow Runs + / {{ run.modelName }} + + + + + + + + + + + + + Validation Summary + {{ validationMessage }} + + {{ validationStatus === 'valid' ? '✓ VALID' : validationStatus === 'warning' ? '⚠ WARNING' : '✗ INVALID' }} + + + + + + + Total Return + + {{ run.totalReturn > 0 ? '+' : '' }}{{ run.totalReturn }}% + + + + Sharpe Ratio + + {{ run.sharpeRatio.toFixed(2) }} + + + + Max Drawdown + {{ run.maxDrawdown }}% + + + Win Rate + {{ run.winRate }}% + + + Profit Factor + {{ run.profitFactor }} + + + PBO + + {{ run.pbo }}% + + + + DSR + + {{ run.dsr }}% + + + + OOS + + {{ run.oos }}% + + + + + + + Performance by Market Phase + + + Bull Market + + Return: {{ run.phases.bull.return }}% + Sharpe: {{ run.phases.bull.sharpe }} + Trades: {{ run.phases.bull.trades }} + + + + Bear Market + + Return: {{ run.phases.bear.return }}% + Sharpe: {{ run.phases.bear.sharpe }} + Trades: {{ run.phases.bear.trades }} + + + + Sideways Market + + Return: {{ run.phases.sideways.return }}% + Sharpe: {{ run.phases.sideways.sharpe }} + Trades: {{ run.phases.sideways.trades }} + + + + + + + + Details + + + Window Start: + {{ run.windowStart }} + + + Window End: + {{ run.windowEnd }} + + + Trading Days: + {{ run.tradingDays }} + + + Created: + {{ run.createdAt }} + + + + + + + diff --git a/frontend/src/features/shadow-run/pages/ShadowRunList.vue b/frontend/src/features/shadow-run/pages/ShadowRunList.vue new file mode 100644 index 00000000..455fc716 --- /dev/null +++ b/frontend/src/features/shadow-run/pages/ShadowRunList.vue @@ -0,0 +1,261 @@ + + + + + + + + + + + + + + + + + + + + + + All Status + Completed + Running + Failed + + + + + + + + handleRowClick(runId)" + /> + + + + + +
+ Models + / {{ model.name }} +
{{ model.description }}
+ Shadow Runs + / {{ run.modelName }} +