# QuantBench System Architecture - Mermaid Diagrams ## 1. 전체 시스템 아키텍처 (All Phases) ```mermaid graph TB subgraph "User Layer" UI[User Interface
Web/Mobile/Desktop] end subgraph "API Layer" Gateway[API Gateway
Authentication & Rate Limiting] end subgraph "Phase 1 - Core Components" Balance[balance
계좌 관리] Mgmt[mgmt
컨테이너 관리] Strategy[strategy
전략 관리] Scheduler[scheduler
실행 스케줄러] Risk[risk
리스크 관리] Data[data
데이터 관리] end subgraph "Phase 2 - Production Ready" Analytics[analytics
성과 분석] Monitor[monitor
모니터링 & 알림] end subgraph "Phase 3 - Enterprise Grade" Audit[audit
감사 로깅] Simulation[simulation
시뮬레이션] end subgraph "Infrastructure" MQ[Message Queue
Kafka/RabbitMQ] DB[(Database
PostgreSQL)] Cache[(Cache
Redis)] Storage[(Object Storage
S3)] end subgraph "External Systems" Broker1[한국투자증권 API] Broker2[삼성증권 API] Broker3[키움증권 API] DataProvider[Data Providers
Yahoo/Alpha Vantage] end UI --> Gateway Gateway --> Mgmt Gateway --> Strategy Gateway --> Scheduler Gateway --> Analytics Gateway --> Monitor Gateway --> Simulation Scheduler --> Strategy Scheduler --> Mgmt Scheduler --> Risk Scheduler --> Balance Strategy --> Data Strategy --> Risk Mgmt --> Balance Mgmt --> Risk Analytics --> Mgmt Analytics --> Data Monitor --> Mgmt Monitor --> Balance Monitor --> Scheduler Simulation --> Strategy Simulation --> Data Simulation --> Risk Audit -.-> Mgmt Audit -.-> Strategy Audit -.-> Scheduler Audit -.-> Balance Balance --> Broker1 Balance --> Broker2 Balance --> Broker3 Data --> DataProvider Data --> Broker1 Mgmt --> DB Strategy --> DB Analytics --> DB Audit --> DB Data --> Cache Monitor --> Cache Analytics --> Storage Audit --> Storage Scheduler --> MQ Monitor --> MQ style Balance fill:#e1f5ff style Mgmt fill:#e1f5ff style Strategy fill:#e1f5ff style Scheduler fill:#e1f5ff style Risk fill:#e1f5ff style Data fill:#e1f5ff style Analytics fill:#fff4e1 style Monitor fill:#fff4e1 style Audit fill:#f0e1ff style Simulation fill:#f0e1ff ``` ## 2. Phase 1 컴포넌트 관계도 ```mermaid graph LR subgraph "Phase 1: MVP" subgraph "Core Trading" Mgmt[mgmt
컨테이너 관리] Strategy[strategy
전략 엔진] Scheduler[scheduler
스케줄러] end subgraph "Safety & Control" Risk[risk
리스크 관리] Data[data
데이터 수집] end subgraph "Broker Integration" Balance[balance
계좌 연동] end end Scheduler -->|1. 트리거| Strategy Strategy -->|2. 신호 생성| Risk Risk -->|3. 검증 통과| Scheduler Scheduler -->|4. 주문 생성| Balance Balance -->|5. 체결 결과| Mgmt Strategy -->|시세 조회| Data Risk -->|리스크 데이터| Data Mgmt -->|자산 할당| Balance style Mgmt fill:#4CAF50,color:#fff style Strategy fill:#2196F3,color:#fff style Scheduler fill:#FF9800,color:#fff style Risk fill:#F44336,color:#fff style Data fill:#9C27B0,color:#fff style Balance fill:#00BCD4,color:#fff ``` ## 3. 전체 Phase별 구성 ```mermaid graph TB subgraph "Phase 3: Enterprise Grade" P3_1[audit
감사 추적] P3_2[simulation
Paper Trading] end subgraph "Phase 2: Production Ready" P2_1[analytics
성과 분석] P2_2[monitor
모니터링] end subgraph "Phase 1: MVP" P1_1[balance
계좌 관리] P1_2[mgmt
컨테이너] P1_3[strategy
전략] P1_4[scheduler
스케줄러] P1_5[risk
리스크] P1_6[data
데이터] end P1_1 --> P2_1 P1_2 --> P2_1 P1_3 --> P2_1 P1_6 --> P2_1 P1_1 --> P2_2 P1_2 --> P2_2 P1_4 --> P2_2 P2_1 --> P3_1 P1_4 --> P3_1 P1_1 --> P3_1 P1_3 --> P3_2 P1_6 --> P3_2 P1_5 --> P3_2 style P1_1 fill:#e3f2fd style P1_2 fill:#e3f2fd style P1_3 fill:#e3f2fd style P1_4 fill:#e3f2fd style P1_5 fill:#e3f2fd style P1_6 fill:#e3f2fd style P2_1 fill:#fff9c4 style P2_2 fill:#fff9c4 style P3_1 fill:#f3e5f5 style P3_2 fill:#f3e5f5 ``` ## 4. 전략 실행 워크플로우 (Sequence Diagram) ```mermaid sequenceDiagram participant S as Scheduler participant M as Mgmt participant ST as Strategy participant D as Data participant R as Risk participant B as Balance participant A as Analytics participant MO as Monitor Note over S: 스케줄 트리거 발생 S->>M: 1. 컨테이너 정보 조회 M-->>S: 컨테이너 설정 & 현재 포지션 S->>ST: 2. 전략 실행 요청 ST->>D: 2.1 시장 데이터 조회 D-->>ST: 최신 시세 데이터 ST->>ST: 2.2 신호 생성 ST-->>S: 매매 신호 반환 S->>R: 3. 리스크 체크 R->>R: 3.1 포지션 사이즈 검증 R->>R: 3.2 VaR 계산 R->>R: 3.3 한도 확인 alt 리스크 체크 실패 R-->>S: 검증 실패 S->>MO: 알림 발송 MO-->>S: 알림 완료 Note over S: 실행 중단 else 리스크 체크 통과 R-->>S: 검증 통과 alt 승인 필요 모드 S->>S: 승인 요청 생성 S->>MO: 사용자에게 알림 Note over S: 사용자 승인 대기 S->>S: 승인 완료 end S->>B: 4. 주문 제출 B->>B: 4.1 증권사 API 호출 B-->>S: 주문 접수 완료 Note over B: 체결 대기... B->>B: 4.2 체결 확인 B->>M: 5. 포지션 업데이트 M->>M: 5.1 컨테이너 밸런스 갱신 M->>A: 6. 성과 계산 트리거 A->>A: 6.1 수익률 계산 A->>A: 6.2 리스크 지표 갱신 A->>MO: 7. 메트릭 업데이트 MO->>MO: 7.1 대시보드 갱신 MO->>MO: 7.2 이상 탐지 alt 이상 탐지 시 MO->>MO: 알림 발송 end S->>S: 8. 실행 완료 기록 end ``` ## 5. 리스크 관리 플로우 ```mermaid graph TB Start([주문 요청]) --> GetPosition[현재 포지션 조회] GetPosition --> CalcNewPosition[신규 포지션 계산] CalcNewPosition --> CheckBalance{잔고 충분?} CheckBalance -->|No| Reject1[주문 거부:
잔고 부족] CheckBalance -->|Yes| CheckSize CheckSize{포지션 사이즈
한도 내?} CheckSize -->|No| Reject2[주문 거부:
사이즈 초과] CheckSize -->|Yes| CheckConcentration CheckConcentration{집중도
한도 내?} CheckConcentration -->|No| Reject3[주문 거부:
집중도 초과] CheckConcentration -->|Yes| CalcVaR CalcVaR[VaR 계산] CalcVaR --> CheckVaR{VaR
한도 내?} CheckVaR -->|No| Warning1[경고 발생
계속 진행] CheckVaR -->|Yes| CheckDrawdown Warning1 --> CheckDrawdown CheckDrawdown{최대 낙폭
한도 내?} CheckDrawdown -->|No| Reject4[주문 거부:
MDD 초과] CheckDrawdown -->|Yes| CheckLeverage CheckLeverage{레버리지
한도 내?} CheckLeverage -->|No| Reject5[주문 거부:
레버리지 초과] CheckLeverage -->|Yes| Approve Approve([검증 통과:
주문 실행]) Reject1 --> Log[리스크 로그 기록] Reject2 --> Log Reject3 --> Log Reject4 --> Log Reject5 --> Log Approve --> ExecuteOrder[주문 제출] ExecuteOrder --> Monitor[실시간 모니터링] Monitor --> CheckStop{손절/익절
조건 충족?} CheckStop -->|Yes| AutoClose[자동 청산] CheckStop -->|No| Monitor style Start fill:#4CAF50,color:#fff style Approve fill:#4CAF50,color:#fff style Reject1 fill:#F44336,color:#fff style Reject2 fill:#F44336,color:#fff style Reject3 fill:#F44336,color:#fff style Reject4 fill:#F44336,color:#fff style Reject5 fill:#F44336,color:#fff style Warning1 fill:#FF9800,color:#fff ``` ## 6. 데이터 흐름도 ```mermaid graph LR subgraph "External Sources" Broker[증권사 API] YahooAPI[Yahoo Finance] AlphaAPI[Alpha Vantage] end subgraph "Data Collection" Collector[Data Collector] RealTime[Real-time Stream] Historical[Historical Fetch] end subgraph "Data Processing" Validator[Data Validator] Adjuster[Corporate Action Adjuster] QualityCheck[Quality Check] end subgraph "Storage" Cache[(Redis Cache
실시간 시세)] TimeSeries[(Time Series DB
과거 데이터)] Metadata[(Metadata DB
종목 정보)] end subgraph "Consumers" Strategy[Strategy Engine] Backtest[Backtest Engine] Analytics[Analytics] Monitor[Monitor] end Broker --> RealTime YahooAPI --> Historical AlphaAPI --> Historical RealTime --> Collector Historical --> Collector Collector --> Validator Validator --> QualityCheck QualityCheck -->|Pass| Adjuster QualityCheck -->|Fail| Alert[Quality Alert] Adjuster --> Cache Adjuster --> TimeSeries Adjuster --> Metadata Cache --> Strategy Cache --> Monitor TimeSeries --> Backtest TimeSeries --> Analytics Metadata --> Strategy style Cache fill:#FF6B6B,color:#fff style TimeSeries fill:#4ECDC4,color:#fff style Metadata fill:#45B7D1,color:#fff ``` ## 7. 컨테이너 생명주기 ```mermaid stateDiagram-v2 [*] --> Created: createContainer() Created --> Active: activate() Created --> [*]: delete() Active --> Running: scheduler trigger Active --> Paused: pause() Active --> [*]: delete() Running --> Active: execution complete Running --> Error: execution failed Running --> Paused: emergency stop Paused --> Active: resume() Paused --> [*]: delete() Error --> Active: resolve & restart Error --> Paused: manual intervention Error --> [*]: delete() state Running { [*] --> GenerateSignals GenerateSignals --> RiskCheck RiskCheck --> PlaceOrders: pass RiskCheck --> [*]: fail PlaceOrders --> AwaitFill AwaitFill --> UpdatePosition UpdatePosition --> [*] } ``` ## 8. 승인 워크플로우 ```mermaid graph TB Trigger[스케줄 트리거] --> GenerateSignals[신호 생성] GenerateSignals --> RiskCheck[리스크 체크] RiskCheck --> CheckMode{실행 모드} CheckMode -->|AUTO| AutoExecute[자동 실행] CheckMode -->|APPROVAL| CreateRequest CreateRequest[승인 요청 생성] CreateRequest --> SendNotification[알림 발송] SendNotification --> WaitApproval[승인 대기] WaitApproval --> CheckTimeout{타임아웃?} CheckTimeout -->|Yes| Expired[요청 만료] CheckTimeout -->|No| WaitApproval WaitApproval --> UserDecision{사용자 결정} UserDecision -->|승인| Execute[주문 실행] UserDecision -->|거부| Rejected[실행 거부] AutoExecute --> Execute Execute --> PlaceOrders[주문 제출] PlaceOrders --> Success{성공?} Success -->|Yes| NotifySuccess[성공 알림] Success -->|No| NotifyFail[실패 알림] Rejected --> LogRejection[거부 로그] Expired --> LogExpired[만료 로그] NotifySuccess --> End([완료]) NotifyFail --> End LogRejection --> End LogExpired --> End style Execute fill:#4CAF50,color:#fff style Rejected fill:#F44336,color:#fff style Expired fill:#FF9800,color:#fff style AutoExecute fill:#2196F3,color:#fff ``` ## 9. 모니터링 & 알림 시스템 ```mermaid graph TB subgraph "Data Sources" Positions[포지션 데이터] Orders[주문 데이터] PnL[손익 데이터] System[시스템 메트릭] end subgraph "Monitoring Engine" Collector[Metrics Collector] Anomaly[Anomaly Detector] Health[Health Checker] Rules[Alert Rules Engine] end subgraph "Alert Processing" Evaluator[Alert Evaluator] Throttle[Throttle Manager] Router[Channel Router] end subgraph "Notification Channels" Email[Email] SMS[SMS] Push[Push Notification] Slack[Slack] end subgraph "Storage & Dashboard" Metrics[(Metrics DB)] Dashboard[Real-time Dashboard] History[Alert History] end Positions --> Collector Orders --> Collector PnL --> Collector System --> Collector Collector --> Anomaly Collector --> Health Collector --> Rules Collector --> Metrics Anomaly --> Evaluator Health --> Evaluator Rules --> Evaluator Evaluator --> Throttle Throttle --> Router Router --> Email Router --> SMS Router --> Push Router --> Slack Evaluator --> History Metrics --> Dashboard style Anomaly fill:#F44336,color:#fff style Health fill:#4CAF50,color:#fff style Rules fill:#FF9800,color:#fff ``` ## 10. Simulation 환경 구조 ```mermaid graph TB subgraph "Real Environment" RealAccount[실제 계좌] RealBroker[증권사 API] RealData[실시간 시세] end subgraph "Simulation Environment" PaperAccount[가상 계좌] subgraph "Simulation Engine" OrderSim[주문 시뮬레이터] FillSim[체결 시뮬레이터] Slippage[슬리피지 모델] Commission[수수료 계산] end subgraph "Test Scenarios" Historical[과거 데이터 리플레이] MonteCarlo[몬테카를로 시뮬레이션] Stress[스트레스 테스트] end end subgraph "Shared Components" Strategy[전략 엔진] Risk[리스크 관리] Analytics[성과 분석] end RealData --> Historical RealData --> OrderSim Strategy --> OrderSim Strategy --> RealBroker OrderSim --> FillSim FillSim --> Slippage Slippage --> Commission Commission --> PaperAccount Historical --> MonteCarlo Historical --> Stress PaperAccount --> Analytics RealAccount --> Analytics Risk --> OrderSim Risk --> RealBroker Analytics --> Validation{검증 통과?} Validation -->|Yes| Promote[실계좌 전환] Validation -->|No| Refine[전략 개선] Promote --> RealAccount Refine --> Strategy style PaperAccount fill:#FFF9C4 style RealAccount fill:#C8E6C9 style Validation fill:#FF9800,color:#fff ```