Skip to main content
GET
/
v1
/
forex
/
eurusd
/
track-record
EUR/USD Forex Ghost Trader Track Record
curl --request GET \
  --url https://api.aioka.io/v1/forex/eurusd/track-record
{
  "stats": {
    "total_trades": 123,
    "validated_paper_trades": 123,
    "win_rate": 123,
    "total_pnl_usd": 123,
    "total_pnl_pips": 123,
    "avg_hold_minutes": 123,
    "best_trade_usd": 123,
    "worst_trade_usd": 123,
    "paper_validation_target": 10
  },
  "trades": [
    {
      "id": "<string>",
      "entry_time": "<string>",
      "exit_time": "<string>",
      "entry_price": 123,
      "exit_price": 123,
      "size_units": 123,
      "pnl_usd": 123,
      "pnl_pips": 123,
      "pnl_pct": 123,
      "is_paper": true,
      "result": "<string>",
      "mode": "<string>",
      "tp1_pnl_usd": 123,
      "session": "<string>",
      "spread_at_entry": 123
    }
  ]
}

Documentation Index

Fetch the complete documentation index at: https://docs.aioka.io/llms.txt

Use this file to discover all available pages before exploring further.

This endpoint is public — no API key required. Powers the EUR/USD tab on aioka.io/track-record. (Sprint 186 — first non-crypto, non-commodity asset.)
Tier: Public (no auth) Cache: None Read-only: Pure read of forex_eurusd_trades table.
⚠️ Paper-trading data. AIOKA EUR/USD Ghost Trader is a simulation in Sprint 186. Live capital does not flow through this loop until 10 validated paper trades have closed AND post-validation approval is documented.

Sprint 186 field-naming convention

This endpoint returns snake_case field names exclusively. No camelCase aliases.

Response Fields

Top-level

FieldTypeMeaning
tradesarrayList of closed validated EUR/USD trades, oldest first
statsobjectDerived performance statistics

trades[i] fields

FieldTypeMeaning
idstringTrade UUID
entry_timestringISO 8601 entry timestamp
exit_timestringISO 8601 exit timestamp
entry_pricenumberEntry price (5 dp)
exit_pricenumberExit price (5 dp)
size_unitsnumberPosition size in base-currency units (EUR)
pnl_usdnumberTotal P&L in USD (TP1 partial + final exit)
pnl_pipsnumberTotal P&L in pips (Forex-native unit)
pnl_pctnumberP&L as % of position cost
tp1_pnl_usdnumber | nullTP1 partial-sell locked P&L in USD (null if TP1 didn’t fire)
sessionstring | nullSession label at entry (LONDON/OVERLAP/NEW_YORK)
spread_at_entrynumber | nullLive spread in pips at entry fill (Gate 8 audit)
is_paperboolAlways true until live mode unlocked
resultstring"WIN" (pnl_usd > 0) or "LOSS"
modestringEntry mode ("B" = Balanced, currently the only mode)

stats fields

FieldTypeMeaning
total_tradesintCount of closed validated trades
validated_paper_tradesintClosed validated paper trades (0 — 10 milestone)
paper_validation_targetint10 — closed validated paper trades required before live mode
win_ratenumberPercentage 0 — 100
total_pnl_usdnumberSum of pnl_usd across all trades
total_pnl_pipsnumberSum of pnl_pips across all trades
avg_hold_minutesnumberMean hold duration
best_trade_usdnumberMax pnl_usd
worst_trade_usdnumberMin pnl_usd

Why P&L in both pips AND USD?

EUR/USD performance has two natural units:
  • Pips — the Forex-native unit. Lets you compare EUR/USD performance across days regardless of position size and across pairs (a 30-pip EUR/USD trade is comparable in technical-execution terms to a 30-pip GBP/USD trade).
  • USD — the portfolio-comparable unit. Lets you stack EUR/USD P&L alongside crypto / Gold P&L on the same scale.
Both are persisted at trade close so analytical tools can pivot on either without re-deriving from the other.

Response

EUR/USD trade history

stats
EURUSDTrackRecordStats · object
required
trades
EURUSDTrackRecordTrade · object[]