---
title: "Approximate weighted-average entry price for a CUSIP across 13F holders"
method: GET
path: "/api/v1/sec/13f/consensus/{cusip}/avg-entry-price"
tags: ["Hedge Fund Intelligence"]
---

# Approximate weighted-average entry price for a CUSIP across 13F holders

`GET /api/v1/sec/13f/consensus/{cusip}/avg-entry-price`

Derived cost-basis approximation per fund and portfolio-wide. 13F filings disclose position SIZE per quarter-end, NOT transaction-level cost basis. This endpoint reconstructs an estimate by multiplying each fund's positive quarterly Δshares by that quarter's average daily close (Sugra Finance equity price feed). Sales are EXCLUDED - their basis cannot be unambiguously attributed without transaction-level disclosure. `ticker` query param is REQUIRED in v1 (CUSIP -> ticker resolver is a follow-up item). Each response carries an explicit `methodology` string and a per-fund + portfolio `confidence` tag - consumers must surface those to end users; the number is an estimate, not a tax cost basis.

## Path parameters

- `cusip` string, required — 9-character canonical CUSIP.

## Query parameters

- `ticker` string, required — Ticker symbol used to fetch per-quarter average daily close (required in v1; CUSIP->ticker resolver is B1.1 backlog).
- `from_quarter` string, nullable — Oldest stem in window. Default: oldest stem in retention manifest.
- `to_quarter` string, nullable — Newest stem in window. Default: newest stem in retention manifest.

## Response `200`

Per-fund + portfolio weighted-avg entry price for one CUSIP.

- EnvelopeSec13fAvgEntryPrice
  - `data` Sec13fAvgEntryPrice, required — Approximate cost basis for one CUSIP across all 13F holders. Reconstructed from quarter-to-quarter position deltas multiplied by the quarter's average daily close. The cost basis is NOT disclosed in 13F filings; this is a derived approximation with explicit methodology and confidence cues attached. Sales (negative deltas) are excluded - they cannot be unambiguously attributed under FIFO vs LIFO without transaction-level disclosure.
    - `comparison` Sec13fComparison — The interval a comparison actually covers. The baseline quarter is chosen from what retention holds, not from the calendar, so when a quarter is missing the two compared quarters are not adjacent and the delta spans more than one. Without this block the response would describe six months in the words of three.
      - `from_period_end` string, nullable — Reported quarter-end of the baseline.
      - `to_period_end` string, nullable — Reported quarter-end of the target.
      - `quarters_apart` integer, nullable — How many quarters the comparison covers; 1 is quarter-over-quarter. Null when the interval cannot be determined.
      - `calendar_adjacent` boolean, nullable — Whether the two quarters are consecutive. Absent when the interval could not be determined - false would read as a known answer.
      - `skipped_quarters` string[], nullable — Reported quarter-ends lying between the two that this comparison does not cover.
      - `note` string, nullable — Present only when quarters were skipped.
    - `cusip` string, required
    - `ticker` string, required — Caller-supplied symbol used for quarter price lookup.
    - `issuer` string, required — Issuer name from the 13F filing (first seen in window).
    - `from_quarter` string, required — Oldest stem effectively used.
    - `to_quarter` string, required — Newest stem effectively used.
    - `quarters` Sec13fQuarterAvgPrice[], required — Per-quarter price snapshots used in the weighted-basis calculation, oldest -> newest.
      - `stem` string, required — 13F quarter stem (e.g. `2025q4` or `01dec2025-28feb2026`).
      - `quarter_start` string, required — Inferred quarter start (ISO YYYY-MM-DD).
      - `quarter_end` string, required — Period-end date from the manifest (ISO YYYY-MM-DD).
      - `avg_close_usd` number, nullable — Arithmetic mean of daily closes in the quarter range; null if upstream returned no bars.
      - `sample_days` integer — Daily bars used to compute the mean. 0 when upstream returned no candles.
      - `available` boolean, required — Whether the price was usable for weighted-basis aggregation.
    - `methodology` string, required — Plain-English description of the cost-basis approximation: 'Σ(Δshares × quarter_avg_close) for positive deltas only; sales excluded; daily close arithmetic mean per quarter range'.
    - `portfolio` Sec13fAvgEntryPortfolio, required — Portfolio-wide weighted aggregation across all funds in the window.
      - `total_acquired_shares` integer, required
      - `weighted_avg_entry_price_usd` number, nullable — Aggregate weighted basis across all funds. Null when no acquisitions priced.
      - `confidence` string, required — `high|medium|low|none` per same heuristic as per-fund confidence.
    - `funds` Sec13fAvgEntryFund[], required — Per-fund breakdown sorted by total_acquired_shares descending.
      - `cik` string, required — 10-digit zero-padded SEC EDGAR CIK.
      - `manager_name` string, required
      - `current_shares` integer, required — Holder's share count at `to_quarter`. 0 if the fund exited the position by `to_quarter`.
      - `total_acquired_shares` integer, required — Sum of positive quarterly position deltas (acquisitions only) across the window.
      - `quarters_acquired` integer, required — Number of quarters with a positive Δshares contribution. 0 when no acquisitions in window.
      - `weighted_avg_entry_price_usd` number, nullable — Σ(Δshares × quarter_avg_close) / Σ(Δshares). Null when no acquisitions in the window, or when every acquisition quarter had no available price.
      - `confidence` string, required — Heuristic quality tag: `high` (>=3 priced acquisition quarters), `medium` (2 quarters), `low` (1 quarter), `none` (0 quarters with usable price).
  - `meta` SugraMeta, required — Metadata attached to every /api/v1/* response envelope.
    - `endpoint` string, required — Requested endpoint path.
    - `data_time` string, required — ISO 8601 UTC timestamp of the source data, not of the request.
    - `response_time` string, required — ISO 8601 UTC timestamp when this response was produced.
    - `provider` string, required — API name and version.
    - `source` string, nullable — Identifier of the primary upstream source used for this response.
    - `attribution` string, nullable — Human-readable attribution mandated by an upstream source (e.g. a securities regulator or self-regulatory organization). Present only on responses whose source requires the owner and source to be clearly identified. Do not remove or alter it when using the response.
    - `fallback_used` boolean, nullable — True when the primary source failed and a fallback produced the data.
    - `fallback_chain` string[], nullable — Ordered list of sources attempted, in the order they were tried.
    - `cached` boolean, nullable — True when this response was served from the internal cache.
    - `stale` boolean, nullable — True when the cached response was returned after the upstream rate-limited or errored. Clients can use this to detect degraded data.

## Other responses

- `401` — Missing or invalid `x-api-key` header. JSON body with a stable `code` distinguishing `missing_api_key` (no header sent) from `invalid_api_key` (header sent, key not accepted); any other 401 source carries the generic `unauthorized` with its detail as `reason`. Plus `hint`. `plan` is always null on 401 - an unauthenticated request has no plan; quota exhaustion is 429, not 401.
- `422` — Validation Error
- `429` — Daily rate limit exceeded. Check `X-RateLimit-Reset` for the next window.
- `503` — Upstream source is temporarily unavailable. Retry after a short delay.

---

[API](https://skmtc.net/sugra/apis/sugra-api.md) · [All operations](https://skmtc.net/sugra/apis/sugra-api/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/sugra/sugra-api/revisions/652554d2aae1/schema)
