Phase 3: Advanced Analytics Foundation - Models, Schemas, and API
This commit is contained in:
@@ -384,3 +384,157 @@ class HabitTrackerResponse(BaseModel):
|
||||
class HabitCompletionRequest(BaseModel):
|
||||
habit_id: int
|
||||
completion_date: Optional[str] = None # ISO date string, defaults to today
|
||||
|
||||
|
||||
# Phase 3: Advanced Analytics Schemas
|
||||
|
||||
class PerformanceSnapshotCreate(BaseModel):
|
||||
snapshot_date: Optional[str] = None # ISO date, defaults to today
|
||||
daily_pnl: float
|
||||
daily_pnl_percent: float
|
||||
total_trades: int
|
||||
winning_trades: int
|
||||
losing_trades: int
|
||||
win_rate: float
|
||||
best_trade: Optional[float] = None
|
||||
worst_trade: Optional[float] = None
|
||||
avg_win: Optional[float] = None
|
||||
avg_loss: Optional[float] = None
|
||||
sharpe_ratio: Optional[float] = None
|
||||
profit_factor: Optional[float] = None
|
||||
max_drawdown: Optional[float] = None
|
||||
cumulative_pnl: float
|
||||
portfolio_value: Optional[float] = None
|
||||
|
||||
|
||||
class PerformanceSnapshotResponse(BaseModel):
|
||||
id: int
|
||||
snapshot_date: str
|
||||
daily_pnl: float
|
||||
daily_pnl_percent: float
|
||||
total_trades: int
|
||||
winning_trades: int
|
||||
losing_trades: int
|
||||
win_rate: float
|
||||
best_trade: Optional[float]
|
||||
worst_trade: Optional[float]
|
||||
avg_win: Optional[float]
|
||||
avg_loss: Optional[float]
|
||||
sharpe_ratio: Optional[float]
|
||||
profit_factor: Optional[float]
|
||||
max_drawdown: Optional[float]
|
||||
cumulative_pnl: float
|
||||
portfolio_value: Optional[float]
|
||||
created_at: datetime
|
||||
|
||||
class Config:
|
||||
from_attributes = True
|
||||
|
||||
|
||||
class TradePatternCreate(BaseModel):
|
||||
pattern_name: str
|
||||
description: Optional[str] = None
|
||||
win_rate: float
|
||||
avg_win: float
|
||||
avg_loss: float
|
||||
sample_count: int
|
||||
best_timeframe: Optional[str] = None
|
||||
best_time_of_day: Optional[str] = None
|
||||
confidence_score: float
|
||||
indicators_used: List[str] = []
|
||||
market_conditions: Optional[str] = None
|
||||
|
||||
|
||||
class TradePatternResponse(BaseModel):
|
||||
id: int
|
||||
pattern_name: str
|
||||
description: Optional[str]
|
||||
win_rate: float
|
||||
avg_win: float
|
||||
avg_loss: float
|
||||
sample_count: int
|
||||
best_timeframe: Optional[str]
|
||||
best_time_of_day: Optional[str]
|
||||
confidence_score: float
|
||||
indicators_used: List[str]
|
||||
market_conditions: Optional[str]
|
||||
total_profit: float
|
||||
created_at: datetime
|
||||
updated_at: datetime
|
||||
|
||||
class Config:
|
||||
from_attributes = True
|
||||
|
||||
|
||||
class LessonLearnedCreate(BaseModel):
|
||||
category: str # entry, exit, risk, psychology, market
|
||||
lesson_text: str
|
||||
related_trades: List[int] = []
|
||||
impact: str = "neutral" # positive, negative, neutral
|
||||
tags: List[str] = []
|
||||
importance: str = "helpful" # critical, important, helpful
|
||||
|
||||
|
||||
class LessonLearnedResponse(BaseModel):
|
||||
id: int
|
||||
date_learned: datetime
|
||||
category: str
|
||||
lesson_text: str
|
||||
related_trades: List[int]
|
||||
impact: str
|
||||
tags: List[str]
|
||||
importance: str
|
||||
status: str
|
||||
created_at: datetime
|
||||
|
||||
class Config:
|
||||
from_attributes = True
|
||||
|
||||
|
||||
class MonthlyReviewCreate(BaseModel):
|
||||
year: int
|
||||
month: int
|
||||
total_trades: int
|
||||
total_pnl: float
|
||||
total_pnl_percent: float
|
||||
best_day: Optional[str] = None # ISO date
|
||||
worst_day: Optional[str] = None
|
||||
best_trade: Optional[float] = None
|
||||
worst_trade: Optional[float] = None
|
||||
win_rate: float
|
||||
avg_daily_pnl: Optional[float] = None
|
||||
sharpe_ratio: Optional[float] = None
|
||||
max_drawdown: Optional[float] = None
|
||||
trading_days: int
|
||||
best_pattern: Optional[str] = None
|
||||
summary: Optional[str] = None
|
||||
improvements: List[str] = []
|
||||
goals_met: List[str] = []
|
||||
goals_missed: List[str] = []
|
||||
|
||||
|
||||
class MonthlyReviewResponse(BaseModel):
|
||||
id: int
|
||||
year: int
|
||||
month: int
|
||||
total_trades: int
|
||||
total_pnl: float
|
||||
total_pnl_percent: float
|
||||
best_day: Optional[str]
|
||||
worst_day: Optional[str]
|
||||
best_trade: Optional[float]
|
||||
worst_trade: Optional[float]
|
||||
win_rate: float
|
||||
avg_daily_pnl: Optional[float]
|
||||
sharpe_ratio: Optional[float]
|
||||
max_drawdown: Optional[float]
|
||||
trading_days: int
|
||||
best_pattern: Optional[str]
|
||||
summary: Optional[str]
|
||||
improvements: List[str]
|
||||
goals_met: List[str]
|
||||
goals_missed: List[str]
|
||||
created_at: datetime
|
||||
|
||||
class Config:
|
||||
from_attributes = True
|
||||
|
||||
Reference in New Issue
Block a user