GET Analytics

abstract

Returns trading performance analytics — monthly stats summary and daily P&L breakdown — used by the Analytics page to render the P&L calendar and monthly statistics.

🔒 Authentication

PropertyValue
MechanismNone
RequiredNo

Endpoints in this group

MethodPathDescription
GET/api/v1/analytics/summaryMonthly statistics for active account
GET/api/v1/analytics/dailyDaily P&L entries for calendar view

GET /api/v1/analytics/summary

Aggregated monthly performance metrics — win rate, total P&L, average trade — for the active account.

Request

ParameterLocationTypeRequiredDescription
account_idQueryintegerYesActive account ID
yearQueryintegerNoYear filter (default: current year)
monthQueryintegerNoMonth filter (default: current month)

Logic Flow

📤 Responses

StatusWhenBody
200 OKSuccessMonthly summary object
404 Not FoundAccount not found{ "detail": "Account not found" }

200 OK example:

{
  "year": 2026,
  "month": 5,
  "total_trades": 42,
  "winning_trades": 28,
  "losing_trades": 14,
  "win_rate": 0.667,
  "total_pnl": 1250.50,
  "avg_win": 85.20,
  "avg_loss": -42.10,
  "profit_factor": 2.02,
  "best_day": "2026-05-08",
  "worst_day": "2026-05-15"
}

GET /api/v1/analytics/daily

Per-day P&L entries for rendering the calendar heatmap.

Request

ParameterLocationTypeRequiredDescription
account_idQueryintegerYesActive account ID
yearQueryintegerNoYear (default: current)
monthQueryintegerNoMonth (default: current)

Pydantic Schema: backend/api/routes/analytics.py :: DailyPnLResponse

200 OK example:

{
  "entries": {
    "2026-05-01": { "pnl": 125.50, "trades": 3, "win_rate": 1.0 },
    "2026-05-02": { "pnl": -45.20, "trades": 2, "win_rate": 0.5 },
    "2026-05-08": { "pnl": 380.00, "trades": 5, "win_rate": 0.8 }
  }
}

RolePath
Routerbackend/api/routes/analytics.py
DB TableDB - trades
RoleLink
Frontend PagePage - Analytics
DB SchemaDB - trades