# Closing Strength (CLV) API
> Where each market closes inside its daily range, and what that says about who is in control into the bell, computed live from Yahoo Finance daily OHLC — no key, nothing stored. The close is the most important price of the day: a market that runs up but closes back near its low was sold into all afternoon (distribution), while one that closes on its highs has buyers in firm control (accumulation), even if the headline change is the same. The Close Location Value (CLV) captures this on a -1 to +1 scale — +1 is a close exactly on the high, -1 exactly on the low, 0 the middle of the range. This API turns it into a conviction gauge. For each instrument it returns today's CLV, the average CLV over the window (a positive average means closes persistently in the upper half — accumulation; negative means distribution), the recent 20-day CLV as the current pressure reading, the share of days that closed in the upper third versus the lower third of their range, and a plain-language read. The asset endpoint returns one instrument's full closing-strength profile; the screener endpoint ranks the cross-asset universe from strongest accumulation to heaviest distribution, so you can see where buyers are quietly winning the close. This is the close-location / accumulation-distribution-pressure cut, price-only and no volume — distinct from the candlestick-pattern API (named shapes on the last bar), the volume-indicator tools and the price feeds. It is who won the day.

## Authentication
All requests require your oanor API key in the `x-oanor-key` header. Get one at https://www.oanor.com/developer/keys.

```bash
curl -H "x-oanor-key: oanor_live_…" "https://api.oanor.com/closestrength-api/..."
```

## Pricing
- **Free** (Free) — 725 calls/Mo, 2 req/s
- **Starter** ($11/Mo) — 15,700 calls/Mo, 6 req/s
- **Pro** ($35/Mo) — 85,500 calls/Mo, 16 req/s
- **Mega** ($78/Mo) — 478,000 calls/Mo, 40 req/s

## Endpoints

### Screener

#### `GET /v1/screener` — Rank the universe from strongest accumulation to heaviest distribution

**Parameters:**
- `metric` (query, optional, string) — recent_clv, avg_clv or upper_third Example: `recent_clv`
- `window` (query, optional, string) — Lookback in trading days (60-1000) Example: `252`
- `class` (query, optional, string) — index, sector, commodity, bond, stock, crypto or all Example: `all`

**Example:**
```bash
curl -H "x-oanor-key: $KEY" \
  "https://api.oanor.com/closestrength-api/v1/screener?metric=recent_clv&window=252&class=all"
```

**Response:**
```json
{
    "data": {
        "note": "Ranked by recent_clv over window_days of daily OHLC. CLV is where the close sits in the day's range, -1 (on the low) to +1 (on the high). A positive average means closes persistently in the upper half (accumulation); recent_clv is the last 20 days (current pressure). Read fresh per call, nothing cached.",
        "class": "all",
        "count": 21,
        "metric": "recent_clv",
        "source": "Yahoo Finance",
        "results": [
            {
                "name": "Technology Sector",
                "rank": 1,
                "class": "sector",
                "symbol": "XLK",
                "avg_clv": 0.149,
                "pressure": "accumulation",
                "available": true,
                "recent_clv": 0.199,
                "current_clv": 0.874,
                "recent_days": 20,
                "observations": 252,
                "lower_third_close_pct": 24.6,
                "upper_third_close_pct": 44.4
            },
            {
                "name": "Nasdaq 100 ETF",
                "rank": 2,
                "class": "index",
                "symbol": "QQQ",
                "avg_clv": 0.148,
                "pressure": "accumulation",
                "available": true,
                "recent_clv": 0.16,
                "current_clv": 0.893,
                "recent_days": 20,
                "observations": 252,
                "lower_third_close_pct": 25,
                "upper_third_close_pct": 44.4
     
…(truncated, see openapi.json for full schema)
```

### Asset

#### `GET /v1/asset` — Full closing-strength profile of one instrument

**Parameters:**
- `symbol` (query, required, string) — Universe symbol Example: `SPY`
- `window` (query, optional, string) — Lookback in trading days (60-1000) Example: `252`

**Example:**
```bash
curl -H "x-oanor-key: $KEY" \
  "https://api.oanor.com/closestrength-api/v1/asset?symbol=SPY&window=252"
```

**Response:**
```json
{
    "data": {
        "name": "S&P 500 ETF",
        "note": "CLV = ((close - low) - (high - close)) / (high - low), from -1 (close on the low) to +1 (close on the high). avg_clv is the window average (accumulation vs distribution); recent_clv is the last 20 days. upper/lower_third_close_pct is the share of days closing in the top/bottom third of their range. Read fresh per call, nothing cached.",
        "class": "index",
        "reads": {
            "today": "closed strong, near the high",
            "regime": "buyers have controlled the close over the window",
            "pressure": "balanced"
        },
        "source": "Yahoo Finance",
        "symbol": "SPY",
        "avg_clv": 0.142,
        "recent_clv": 0.078,
        "current_clv": 0.713,
        "recent_days": 20,
        "window_days": 252,
        "observations": 252,
        "current_pressure": "balanced",
        "lower_third_close_pct": 25.4,
        "upper_third_close_pct": 43.7
    },
    "meta": {
        "timestamp": "2026-06-12T10:34:41.458Z",
        "request_id": "f64d5a09-84b0-47af-93bf-3c784374869e"
    },
    "status": "ok",
    "message": "Asset close strength retrieved successfully",
    "success": true
}
```

### Universe

#### `GET /v1/universe` — The cross-asset universe and its classes

**Example:**
```bash
curl -H "x-oanor-key: $KEY" \
  "https://api.oanor.com/closestrength-api/v1/universe"
```

**Response:**
```json
{
    "data": {
        "note": "The cross-asset universe the screener ranks. Pass class= to a screener call to rank within one class.",
        "count": 21,
        "assets": [
            {
                "name": "S&P 500 ETF",
                "class": "index",
                "symbol": "SPY"
            },
            {
                "name": "Nasdaq 100 ETF",
                "class": "index",
                "symbol": "QQQ"
            },
            {
                "name": "US Small Caps",
                "class": "index",
                "symbol": "IWM"
            },
            {
                "name": "Developed ex-US",
                "class": "index",
                "symbol": "EFA"
            },
            {
                "name": "Emerging Markets",
                "class": "index",
                "symbol": "EEM"
            },
            {
                "name": "Technology Sector",
                "class": "sector",
                "symbol": "XLK"
            },
            {
                "name": "Financials Sector",
                "class": "sector",
                "symbol": "XLF"
            },
            {
                "name": "Energy Sector",
                "class": "sector",
                "symbol": "XLE"
            },
            {
                "name": "Health Care Sector",
                "class": "sector",
                "symbol": "XLV"
            },
            {
                "name": "Utilities Sector",
                "cl
…(truncated, see openapi.json for full schema)
```

### Meta

#### `GET /v1/meta` — Service metadata

**Example:**
```bash
curl -H "x-oanor-key: $KEY" \
  "https://api.oanor.com/closestrength-api/v1/meta"
```

**Response:**
```json
{
    "data": {
        "note": "metric is recent_clv (default, current pressure), avg_clv or upper_third. window is 60-1000 trading days (default 252). class filters to index/sector/commodity/bond/stock/crypto (default all). CLV = ((close-low)-(high-close))/(high-low). Read fresh per call, nothing cached.",
        "source": "Yahoo Finance daily OHLC, live",
        "classes": [
            "index",
            "sector",
            "commodity",
            "bond",
            "stock",
            "crypto"
        ],
        "metrics": [
            "avg_clv",
            "recent_clv",
            "upper_third"
        ],
        "service": "closestrength-api",
        "endpoints": {
            "GET /v1/meta": "This document.",
            "GET /v1/asset": "Full closing-strength profile of one instrument (symbol=SPY, window=252).",
            "GET /v1/screener": "Rank the universe from strongest accumulation to heaviest distribution (metric=recent_clv, window=252, class=all).",
            "GET /v1/universe": "The cross-asset universe and its classes."
        },
        "description": "Closing strength / Close Location Value — where each market closes inside its daily range and who controls the close, live from Yahoo Finance daily OHLC (no key, nothing stored). CLV runs -1 (close on the low) to +1 (close on the high). For each instrument it returns today's CLV, the window-average CLV (positive = accumulation, negative = distribution), the recent 20-day CLV (current pres
…(truncated, see openapi.json for full schema)
```


---
Marketplace page: https://www.oanor.com/api/closestrength-api
OpenAPI spec: https://www.oanor.com/api/closestrength-api/openapi.json
