Skip to main content
Return factor screens ranked by recent strength so agents can run factor-rotation and cross-factor ranking workflows
Audience: application and coding agent.

Canonical metadata

  • requestId
  • traceparent

Example request

curl -X GET \
  -H "x-api-key: $SECAPI_API_KEY" \
  -H "secapi-version: 2026-03-19" \
  "https://api.secapi.ai/v1/factors/screen"

Example response

{
  "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"
}

Give this prompt to your agent

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