> ## Documentation Index
> Fetch the complete documentation index at: https://docs.secapi.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# GET /v1/factors/returns

> Return factor return history, z-scores, and volatility-scaled series for supported factor families

Return factor return history, z-scores, and volatility-scaled series for supported factor families

<Info>
  Audience: application and coding agent.
</Info>

## Canonical metadata

* `requestId`
* `traceparent`

## Example request

<RequestExample>
  ```bash theme={null}
  curl -X GET \
    -H "x-api-key: $SECAPI_API_KEY" \
    -H "secapi-version: 2026-03-19" \
    "https://api.secapi.ai/v1/factors/returns"
  ```
</RequestExample>

## Example response

<ResponseExample>
  ```json theme={null}
  {
    "object": "list",
    "data": [
      {
        "object": "factor_return",
        "id": "factor_return:VALUE:1m:2026-06-09",
        "factorKey": "VALUE",
        "factorName": "Value",
        "category": "style",
        "asOf": "2026-06-09T22:15:00.000Z",
        "window": "1m",
        "modelName": "secapi_stock_basket_factor_model_v1",
        "rawReturn": 0.018,
        "pureReturn": 0.014,
        "scaledReturn": 0.021,
        "zScore": 1.42,
        "leverage": 1,
        "qualityProof": {
          "object": "factor_quality_proof",
          "status": "ready",
          "proofSource": "secapi_factor_pipeline",
          "proofObservedAt": "2026-06-09T22:15:00.000Z",
          "rowLevelProofAvailable": true,
          "proofReady": true,
          "firstDate": "2015-01-02",
          "lastDate": "2026-06-09",
          "firstRequiredMarketDate": "2015-01-02",
          "latestMarketDay": "2026-06-09",
          "targetHistoryStartDate": "2015-01-01",
          "requiredHistoryStartDate": "2015-01-01",
          "shortHistoryExempt": false,
          "historyStartMarketDayLag": 0,
          "latestMarketDayLag": 0,
          "rowCount": 2882,
          "distinctFactorDateCount": 2882,
          "coveredMarketDateCount": 2882,
          "expectedMarketDateCount": 2882,
          "missingSessionCount": 0,
          "coveragePct": 1,
          "methodologyVersion": "secapi_factor_returns_v1",
          "modelName": "secapi_stock_basket_factor_model_v1",
          "methodologyUrl": "https://docs.secapi.ai/factors/methodology",
          "sourceMetadata": {
            "latestAsOf": "2026-06-09",
            "latestSourcePublishedAt": "2026-06-09T21:30:00.000Z",
            "observedModelNameCount": 1,
            "observedModelNamesSample": [
              "secapi_stock_basket_factor_model_v1"
            ],
            "nonStockBasketRowCount": 0,
            "metadataModelNames": [
              "secapi_stock_basket_factor_model_v1"
            ],
            "metadataModelVersions": [
              "2026-06-09"
            ],
            "metadataMethodologyUrls": [
              "https://docs.secapi.ai/factors/methodology"
            ]
          },
          "degradedReasons": []
        },
        "responseMode": "compact",
        "dataAsOf": "2026-06-09",
        "freshnessStatus": "fresh",
        "methodologyVersion": "secapi_factor_returns_v1",
        "materializationVersion": "2026-06-09",
        "provenance": {
          "source": "secapi_factor_pipeline",
          "sourceLabel": "SecAPI factor pipeline",
          "accessionNumber": null,
          "filingUrl": "https://docs.secapi.ai/factors/methodology",
          "acceptedAt": null,
          "retrievedAt": "2026-06-09T22:15:00.000Z",
          "parserVersion": "secapi-factor-pipeline"
        },
        "freshness": {
          "status": "fresh",
          "asOf": "2026-06-09T22:15:00.000Z",
          "sourcePublishedAt": "2026-06-09T21:30:00.000Z",
          "lagMs": 2700000
        },
        "materialization": {
          "parserVersion": "secapi-factor-pipeline",
          "materializationVersion": "2026-06-09"
        },
        "sourceRights": {
          "source": "secapi_owned_factor_pipeline",
          "sourceLabel": "SecAPI factor pipeline",
          "posture": "public_safe",
          "publicAvailability": "public",
          "contractStatus": "approved",
          "restrictions": [],
          "notes": "SecAPI-owned derived factor data."
        },
        "methodology": {
          "id": "secapi_factor_returns",
          "version": "v1",
          "summary": "SecAPI-owned daily factor returns, exposures, and portfolio analytics built for agent and API workflows.",
          "confidence": "high",
          "launchState": "beta",
          "inputs": [
            "secapi_factor_returns",
            "secapi_factor_exposures",
            "market_calendar"
          ],
          "validation": {
            "launchHistoryFloor": "2015-01-01",
            "marketCalendarAware": true
          }
        },
        "revision": {
          "sourcePublishedAt": "2026-06-09T21:30:00.000Z",
          "retrievedAt": "2026-06-09T22:15:00.000Z",
          "vintageId": "2026-06-09",
          "revisedFrom": null
        },
        "degradedState": null
      }
    ],
    "hasMore": false,
    "nextCursor": null,
    "responseMode": "compact",
    "requestId": "req_2ZK8Q1W9F4M6P7R3",
    "traceparent": "00-4bf92f3577b34da6a3ce929d0e0e4736-00f067aa0ba902b7-01"
  }
  ```
</ResponseExample>

## Give this prompt to your agent

<Prompt>
  Use SEC API GET /v1/factors/returns for multi-factor return windows, z-scores, and volatility-scaled series. Preserve each row's `factorKey`, `factorName`, `category`, `window`, `rawReturn`, `pureReturn`, `scaledReturn`, `zScore`, `qualityProof`, `freshness`, `materialization`, `methodology`, `requestId`, and `traceparent`.
</Prompt>

## Failure posture

* treat non-2xx responses as contract-aware failures, not free-form errors
* preserve `requestId` and `traceparent` in logs and downstream reports
* if provenance or freshness metadata is present, return it unchanged so trust is not lost in the handoff
