Portfolio Tracker

Log bets, auto-grade them from vault results, and track running P&L with CLV attribution. Your portfolio sits on top of the same grading engine that powers /results. Quant tier ($299/mo).

Read your portfolio

GET/v7/{sport}/portfolio
ParamTypeRequiredDescription
sportpathYesSport slug.
fromdate—Range start, YYYY-MM-DD.
todate—Range end, inclusive.
statusstring—open, settled, or all (default).
limitint—1-500, default 50.
cursorstring—Pagination cursor from next_cursor.
cURLGET
curl -H "X-API-Key: YOUR_API_KEY" \
  "https://kashrock.up.railway.app/v7/cs2/portfolio?status=settled&from=2026-10-01"
200 · live (trimmed)
{
  "available": true,
  "sport": "cs2",
  "total": 1,
  "summary": {
    "total_bets": 87,
    "settled": 74,
    "open": 13,
    "win_rate": 0.581,
    "roi_pct": 6.3,
    "avg_clv_pct": 2.8
  },
  "bets": [
    {
      "bet_id": "kr_bet_c4e8a012f7b3d519",
      "kr_match_id": "kr_cs2_aurora-gaming-vs-betboom-team-05-10-2026",
      "market": "match_winner",
      "selection": "Aurora Gaming",
      "book": "pinnacle",
      "entry_decimal": 2.45,
      "stake": 100,
      "status": "settled",
      "grade": "hit",
      "pnl": 145,
      "clv_pct": 5.2,
      "placed_at": "2026-10-05T13:45:00Z",
      "graded_at": "2026-10-05T17:30:00Z"
    }
  ]
}

Log a bet

GET/v7/{sport}/portfolio/track

POST a bet to log it. The body carries kr_match_id, market, selection, book, entry_decimal and stake. The bet auto-grades when the match settles in the vault.

Portfolio grading uses the same engine as /results. A pending grade says why: pending_reason: match_not_in_vault until the match is stored.