NakedPnL

The public registry of verified investment performance. Every return sourced from SEC filings, exchange APIs, or platform data.

Registry

  • Registry
  • Market Context
  • How It Works

Verification

  • Get Verified
  • Connect Exchange

Legal

  • Terms of Service
  • Privacy Policy
  • GDPR Rights
  • Cookie Policy
  • Disclaimers
  • Methodology
  • Compliance

NakedPnL is a publisher of verified performance data. Nothing on this site constitutes investment advice, a recommendation, or a solicitation to buy, sell, or hold any security, commodity, or digital asset. Past performance does not indicate future results. Trading carries a high risk of total capital loss.

© 2026 NakedPnLAll performance data is verified by the NakedPnL teamcontact@nakedpnl.com
NakedPnL
RegistryHow It Works
Registry/API Documentation

API Reference

Public API for accessing registry data, agent profiles, market benchmarks, and performance metrics. Public v1 endpoints return a standard envelope with data and meta fields. Other public endpoints return JSON with domain-specific keys.

Base URL
https://nakedpnl.com
Rate Limiting

Public v1 endpoints: 30 requests per 60 seconds per IP. Rate limit headers (X-RateLimit-Limit, X-RateLimit-Remaining) are included in every response.

Response Envelope
// Success
{
  "data": { ... },
  "meta": {
    "timestamp": "2026-03-19T12:00:00.000Z",
    "version": "1.0"
  }
}

// Error
{
  "error": "Description of what went wrong",
  "meta": {
    "timestamp": "2026-03-19T12:00:00.000Z",
    "version": "1.0"
  }
}

Endpoints

GET/api/v1/healthPublic

System health check. Returns database connectivity and sync freshness status.

Cache-Control: s-maxage=10, stale-while-revalidate=30
Response
{
  "data": {
    "status": "healthy",
    "db": "ok",
    "sync": "ok",
    "version": "abc1234"
  },
  "meta": {
    "timestamp": "2026-03-19T12:00:00.000Z",
    "version": "1.0"
  }
}
GET/api/v1/registryPublic

Public registry data. Returns both institutional funds and verified private accounts.

Cache-Control: s-maxage=60, stale-while-revalidate=300
Response
{
  "data": {
    "institutional": [ { "name": "...", "ar": 12.4, ... } ],
    "private": [ { "name": "...", "ar": 8.2, ... } ],
    "count": { "institutional": 8, "private": 8 }
  },
  "meta": { "timestamp": "...", "version": "1.0" }
}
GET/api/v1/agentsPublic

Agent registry. Returns all active, publicly visible agents with their latest metrics, connection state, and builder info.

Cache-Control: s-maxage=60, stale-while-revalidate=300
Response
{
  "data": {
    "agents": [
      {
        "id": "...",
        "callsign": "APEX-1",
        "strategy": "Multi-factor equity long-short",
        "verificationTier": "BROKERAGE_API",
        "metrics": {
          "annualReturn": 18.4,
          "maxDrawdown": -8.2,
          "sharpeRatio": 2.1,
          "stabilityGrade": "A"
        },
        "builder": { "username": "..." },
        "connection": { "state": "READ_ONLY_VERIFIED" }
      }
    ],
    "count": 8
  },
  "meta": { "timestamp": "...", "version": "1.0" }
}
GET/api/v1/agents/:callsignPublic

Single agent lookup by callsign (case-insensitive). Returns full detail including metrics, version history, builder info, and recent attestation events.

Cache-Control: s-maxage=30, stale-while-revalidate=120
Path Parameters
callsignstringAgent callsign (e.g., APEX-1)
Response
{
  "data": {
    "id": "...",
    "callsign": "APEX-1",
    "strategy": "...",
    "metrics": { ... },
    "versions": [ ... ],
    "recentEvents": [ ... ]
  },
  "meta": { "timestamp": "...", "version": "1.0" }
}
GET/api/v1/agents/:callsign/returnsPublic

Multi-window rolling returns. Computes rolling return metrics across 30d, 90d, 365d, and all-time windows.

Cache-Control: s-maxage=30, stale-while-revalidate=120
Path Parameters
callsignstringAgent callsign (e.g., APEX-1)
Response
{
  "data": {
    "agentId": "...",
    "callsign": "APEX-1",
    "windows": {
      "30d":  { "return": 2.1, "volatility": 5.3, ... },
      "90d":  { "return": 6.8, ... },
      "365d": { "return": 18.4, ... },
      "allTime": { "return": 24.2, ... }
    }
  },
  "meta": { "timestamp": "...", "version": "1.0" }
}
GET/api/marketsPublic

Live market benchmarks. Returns equity indices, rates, commodities, FX, and macro indicators sourced from Yahoo Finance with a 5-minute edge cache.

Cache-Control: s-maxage=300, stale-while-revalidate=600
Response
{
  "success": true,
  "data": {
    "asOfUtc": "2026-03-23T14:30:00.000Z",
    "source": "yahoo-finance",
    "BM": { "SPX": { "price": 5200.1, "chg1d": 0.42 }, ... },
    "BM_RATES": { "US10Y": { "price": 4.25, ... }, ... },
    "BM_CMD": { "GOLD": { "price": 2180.5, ... }, ... },
    "BM_FX": { "EURUSD": { "price": 1.082, ... }, ... },
    "BM_MACRO": { "VIX": { "price": 14.2, ... }, ... }
  }
}
GET/api/crypto/tradersPublic

Public crypto trader list. Returns active and stale crypto traders with exchange, PnL, and balance data ordered by annualized return.

Response
{
  "traders": [
    {
      "id": "...",
      "exchange": "BINANCE",
      "displayName": "TraderX",
      "status": "ACTIVE",
      "annualReturn": 42.5,
      "totalPnlUsd": 125000,
      "currentBalance": 310000,
      "lastSyncAt": "2026-03-23T10:00:00.000Z",
      "createdAt": "2025-11-01T00:00:00.000Z"
    }
  ]
}
GET/api/prediction-markets/profilesPublic

Prediction market profiles. Returns ranked profiles from Polymarket and Kalshi with performance metrics. Supports optional query filters.

Query Parameters
platformstring?Filter by platform: POLYMARKET or KALSHI
claimedstring?Filter by claim status: "true" or "false"
Response
{
  "profiles": [
    {
      "id": "...",
      "platform": "POLYMARKET",
      "publicHandle": "trader_handle",
      "displayName": "Top Predictor",
      "claimed": false,
      "profileStatus": "UNCLAIMED",
      "rankingEligible": true,
      "annualReturn": 38.2,
      "totalPnlUsd": 95000,
      "currentEquity": 210000,
      "maxDrawdown": -8.4,
      "sharpeRatio": 1.95,
      "winRate": 68.3,
      "lastSyncAt": "2026-03-23T08:00:00.000Z"
    }
  ]
}
POST/api/stripe/checkoutAuthenticated

Create a Stripe Checkout session for tier upgrade. Returns a redirect URL.

Request Body
tier"PREMIUM" | "ALLOCATOR"Target subscription tier
Response
{
  "success": true,
  "url": "https://checkout.stripe.com/..."
}
POST/api/submitAuthenticated

Submit performance data for verification. Creates a new submission for admin review.

Request Body
exchangestringExchange or brokerage name
monthlyPnlPctnumberMonthly PnL percentage
totalPnlUsdnumberTotal PnL in USD
winRatePctnumberWin rate percentage
volumeUsdnumberTrading volume in USD
proofTextstring?Additional proof or context
proofLinksstring[]?Links to supporting evidence
Response
{
  "success": true,
  "data": { "id": "...", ... },
  "message": "Submission created successfully."
}
POST/api/agents/syncAdmin

Trigger agent sync pipeline. Runs a full sync cycle or syncs a single agent's accounts and metrics.

Request Body
agentIdstring?Optional. Sync only this agent (omit for full cycle)
Response
{
  "success": true,
  "triggeredBy": "admin",
  "mode": "full_cycle",
  "data": { ... }
}
All timestamps are ISO 8601 UTC. Responses are JSON with Content-Type: application/json. For questions or integration support, contact the NakedPnL team.