Public
Ghost Trader Track Record
Full validated trade history with per-trade detail, aggregates, and equity curve
GET
Overview
Returns the complete Ghost Trader track record since the Sprint 164 clean-slate restart (2026-04-12 17:55 UTC). Powers the aioka.io/track-record page. Every field is JSON-encoded in camelCase to match the website TypeScript interface one-for-one. Only trades withis_valid = true and status = 'CLOSED' are included. Backfilled,
synthetic, and open trades are excluded. /v1/ghost/stats remains the lightweight
5-field homepage widget endpoint — this endpoint is the full-history counterpart.
Tier: Public ✅ — No API key required
Cache: None
Rate limit: None
Response Fields — Aggregates
| Field | Type | Description |
|---|---|---|
validatedTrades | integer | Number of closed validated trades in the history |
tradingMode | string | "LIVE" once any trade has a real Kraken fill, otherwise "PAPER" |
winRate | float | Percentage of validated closed trades that were profitable (0.0–100.0) |
totalPnlUsd | float | Sum of P&L (USD) across all validated closed trades |
avgHoldTimeMinutes | float | Mean hold duration across all validated trades |
bestTradeUsd | float | Best single-trade P&L |
worstTradeUsd | float | Worst single-trade P&L |
avgPnlPerTrade | float | Mean P&L per trade |
since | string | Track record restart date ("2026-04-12") |
trades | array | Per-trade detail (see below) |
equityCurve | array | Cumulative P&L points for charting |
Response Fields — Each Trade
| Field | Type | Description |
|---|---|---|
id | string | Trade UUID |
entryTime | string (ISO 8601) | UTC entry timestamp |
exitTime | string (ISO 8601) | UTC exit timestamp |
entryPrice | float | BTC price at entry (USD) |
exitPrice | float | BTC price at exit (USD) |
holdTimeMinutes | integer | Trade duration in minutes |
pnlUsd | float | Total trade P&L including TP1 partial |
pnlPercent | float | Percentage move from entry to exit |
result | string | "WIN" or "LOSS" |
mode | string | Entry mode — "A", "B", or "C" |
tp1Hit | boolean | Whether TP1 fired during the trade |
exitReason | string | Human-readable exit cause ("TP2 (Final Exit — Remaining 50%)", "TSL", "Stop Loss", etc.) |
entryConditions | object | null | Entry snapshot — councilVerdict, rsi, emaDistance, confidence |
Response Fields — Equity Curve Point
| Field | Type | Description |
|---|---|---|
date | string | Exit timestamp for this point |
cumulativePnl | float | Running total P&L up to and including this trade |
tradeId | string | null | Trade UUID for cross-reference |
result | string | null | "WIN" or "LOSS" |
P&L accounting includes both the TP1 partial close and the final exit. A trade where
TP1 locked +268 reports
pnlUsd = 401.35.Response
200 - application/json
Full validated track record