머니페니 12d235a1f1 feat: add 9 new modules - notification alerts, trading journal, position sizing, pension allocation, drawdown monitoring, benchmark dashboard, tax simulation, correlation analysis, parameter optimizer
Phase 1:
- Real-time signal alerts (Discord/Telegram webhook)
- Trading journal with entry/exit tracking
- Position sizing calculator (Fixed/Kelly/ATR)

Phase 2:
- Pension asset allocation (DC/IRP 70% risk limit)
- Drawdown monitoring with SVG gauge
- Benchmark dashboard (portfolio vs KOSPI vs deposit)

Phase 3:
- Tax benefit simulation (Korean pension tax rules)
- Correlation matrix heatmap
- Parameter optimizer with grid search + overfit detection
2026-03-29 10:03:08 +09:00

41 lines
1.0 KiB
Python

"""
Drawdown related Pydantic schemas.
"""
from datetime import date
from decimal import Decimal
from typing import List, Optional
from pydantic import BaseModel, Field
from app.schemas.portfolio import FloatDecimal
class DrawdownDataPoint(BaseModel):
date: date
total_value: FloatDecimal
peak: FloatDecimal
drawdown_pct: FloatDecimal
class DrawdownResponse(BaseModel):
portfolio_id: int
current_drawdown_pct: FloatDecimal
max_drawdown_pct: FloatDecimal
max_drawdown_date: date | None = None
peak_value: FloatDecimal | None = None
peak_date: date | None = None
trough_value: FloatDecimal | None = None
trough_date: date | None = None
alert_threshold_pct: FloatDecimal = Decimal("20")
class DrawdownHistoryResponse(BaseModel):
portfolio_id: int
data: List[DrawdownDataPoint] = []
max_drawdown_pct: FloatDecimal
current_drawdown_pct: FloatDecimal
class DrawdownSettingsUpdate(BaseModel):
alert_threshold_pct: FloatDecimal = Field(..., gt=0, le=100)