feat: simulation portfolio surveillance + patterns grid/filter UI
Portfolio Monitor (v4.4): - New portfolio_risk.py service: concentration by asset_class, directional conflict detection (same underlying, opposite directions), overweight alerts - AI agent (Step 7b) runs GPT-4o-mini after each cycle log: assessment + prioritized actions + rebalance suggestion, persisted in system_logs - GET /api/journal/portfolio-risk — full risk breakdown + latest AI monitor reco - POST /api/journal/trade-check — pre-entry conflict & concentration check - asset_class column added to trade_entry_prices (auto-migration + populated at INSERT) - Journal: new "Risque Sim." tab with concentration bars, conflict alerts, AI recommendations; red badge on tab when danger alerts exist PatternEditor: - Grid view default (2-3 cols responsive), list toggle - Asset class filter chips (energy/metals/agri/equities/indices/forex/rates) - Sort: Date (default) / Score IA / Prob. - Period filter: Tout / 7j / 30j - Result count badge when filters active Doc: v4.3 → v4.4, updated Journal/PatternEditor/cycle steps/schema/glossary Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -341,6 +341,7 @@ export const CYCLE_REFRESH_KEYS = [
|
||||
['journal-macro'],
|
||||
['geo-risk-score'],
|
||||
['pattern-matches'],
|
||||
['journal-portfolio-risk'],
|
||||
]
|
||||
|
||||
export const useTriggerCycle = () => {
|
||||
@@ -458,6 +459,19 @@ export const useSaveExitDefaults = () => {
|
||||
})
|
||||
}
|
||||
|
||||
export const useSimPortfolioRisk = () =>
|
||||
useQuery({
|
||||
queryKey: ['journal-portfolio-risk'],
|
||||
queryFn: () => api.get('/journal/portfolio-risk').then(r => r.data),
|
||||
staleTime: 30_000,
|
||||
})
|
||||
|
||||
export const useTradeCheck = () =>
|
||||
useMutation({
|
||||
mutationFn: (body: { underlying: string; strategy: string; asset_class: string }) =>
|
||||
api.post('/journal/trade-check', body).then(r => r.data),
|
||||
})
|
||||
|
||||
// ── Risk Profiles ─────────────────────────────────────────────────────────────
|
||||
|
||||
export const useRiskProfiles = () =>
|
||||
|
||||
Reference in New Issue
Block a user