Point-in-time data

Filings get amended and restated. To backtest honestly you need to know what was knowable on a given date, not what the record looks like today. Arkolith keeps an append-only, point-in-time archive so you can ask exactly that.

As-of holdings (no look-ahead)#

fund.holdings.as_of returns a fund's positions as known on a date: the most recent filing whose filedAt is on or before your as_of. No filing that hadn't been published yet leaks into the result.

bash
curl -X POST https://arkolith.com/api/mcp \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "fund.holdings.as_of",
    "arguments": {
      "cik": "1067983",
      "as_of": "2024-06-30"
    }
  }
}'

The response names the known_filing it resolved to (its quarter and filed-at date), so the as-of resolution is auditable.

Position history#

fund.position.history gives the time series of a single security in a fund's book (shares and USD value per quarter) so you can chart conviction building or unwinding over time.

bash
curl -X POST https://arkolith.com/api/mcp \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "fund.position.history",
    "arguments": {
      "cik": "1067983",
      "ticker": "AAPL"
    }
  }
}'

Change sets#

The signal in a 13F is the change, not the snapshot. fund.holdings.diff returns the quarter-over-quarter change set grouped into new, added, reduced, and exited — the change type is the group each row falls under, and every row carries its pct_delta inline.

Why this is the moat
Anyone can scrape today's filing. The uncopyable asset is the archive: the bitemporal record of what was true and when we knew it. You can't backfill a point-in-time history after the fact; you have to have been capturing it all along.