---
title: "Factor return history"
method: GET
path: "/v1/factors/history/{factorKey}"
---

# Factor return history

`GET /v1/factors/history/{factorKey}`

## Request

- Base URL: `https://api.turos.app`
- URL: `https://api.turos.app/v1/factors/history/{factorKey}`
- Auth: one of:
  - API key in header `x-api-key`
  - HTTP bearer

Return a single factor's daily return history with 1D through MAX summary windows for chart and table workflows.

## Path parameters

- `factorKey` string, required

## Query parameters

- `range` '1d' | '5d' | '10d' | '1m' | '3m' | '6m' | '1y' | 'ytd' | 'max'
- `date_from` string, date
- `date_to` string, date
- `format` 'json' | 'csv'
- `response_mode` 'compact' | 'standard' | 'verbose'
- `include` string

## Response `200`

Successful response

- FactorHistory
  - `dataAsOf` string
  - `freshnessStatus` 'fresh' | 'stale' | 'degraded' | 'unknown'
  - `methodologyVersion` string
  - `materializationVersion` string
  - `object` 'factor_history', required
  - `responseMode` 'compact' | 'standard' | 'verbose': Projection used for this resource. compact is token-efficient for agents; standard and verbose retain fuller operational context.
  - `id` string, required
  - `factorKey` string, required
  - `factorName` string, required
  - `category` string, required
  - `range` '1d' | '5d' | '10d' | '1m' | '3m' | '6m' | '1y' | 'max', required
  - `dateFrom` string, date, required
  - `dateTo` string, date, required
  - `historyStartDate` string, date, nullable
  - `historyEndDate` string, date, nullable
  - `observationCount` integer, required
  - `asOf` string, date-time, required
  - `series` object[]
    - `date` string, date, required
    - `rawReturn` number, required
    - `pureReturn` number, required
    - `scaledReturn` number, required
    - `zScore` number, required
    - `leverage` number, required
  - `seriesCount` integer
  - `seriesSample` object[]
  - `expansionHints` string[]
  - `summaryWindows` object[], required
    - `window` string, required
    - `rawReturn` number, nullable, required
    - `pureReturn` number, nullable, required
    - `scaledReturn` number, nullable, required
    - `observationCount` integer, required
    - `startDate` string, date, nullable, required
    - `endDate` string, date, nullable, required
  - `qualityProof` FactorQualityProof, required
    - `object` 'factor_quality_proof', required
    - `status` 'ready' | 'degraded' | 'not_available', required
    - `proofSource` string, nullable, required
    - `proofObservedAt` string, date-time, nullable, required
    - `rowLevelProofAvailable` boolean, required
    - `proofReady` boolean, required
    - `firstDate` string, date, nullable, required
    - `lastDate` string, date, nullable, required
    - `firstRequiredMarketDate` string, date, nullable, required
    - `latestMarketDay` string, date, nullable, required
    - `targetHistoryStartDate` string, date, nullable, required
    - `requiredHistoryStartDate` string, date, nullable, required
    - `shortHistoryExempt` boolean, required
    - `historyStartMarketDayLag` integer, nullable, required
    - `latestMarketDayLag` integer, nullable, required
    - `rowCount` integer, nullable, required
    - `distinctFactorDateCount` integer, nullable, required
    - `coveredMarketDateCount` integer, nullable, required
    - `expectedMarketDateCount` integer, nullable, required
    - `missingSessionCount` integer, nullable, required
    - `coveragePct` number, nullable, required
    - `methodologyVersion` string, nullable, required
    - `modelName` string, nullable, required
    - `methodologyUrl` string, nullable, required
    - `sourceMetadata` FactorQualityProofSourceMetadata, required
      - `latestAsOf` string, nullable, required
      - `latestSourcePublishedAt` string, nullable, required
      - `observedModelNameCount` integer, required
      - `observedModelNamesSample` string[], required
      - `nonStockBasketRowCount` integer, required
      - `metadataModelNames` string[], required
      - `metadataModelVersions` string[], required
      - `metadataMethodologyUrls` string[], required
    - `degradedReasons` string[], required
  - `provenance` ResponseMetadata
    - `source` string, required
    - `sourceLabel` string
    - `sourceAgency` string
    - `canonicality` string
    - `fallbackPolicy` string
    - `accessionNumber` string, nullable, required
    - `filingUrl` string, uri, required
    - `acceptedAt` string, nullable
    - `retrievedAt` string, required
    - `parserVersion` string, required
  - `freshness` FreshnessMetadata: Freshness of the record. For SEC filings, freshness measures the delay between SEC acceptance (`sourcePublishedAt`) and when the record became available in the API — not the age of the document. Statuses: `current` (recently published and available promptly), `archival` (an immutable historical document held in full; its availability delay is not a freshness signal), `degraded`/`stale` (a recently published filing that became available later than the freshness thresholds allow), `fresh` (continuously refreshed datasets recently observed at source), `unknown` (no timestamps). An old immutable filing is never `stale` simply because it was published long ago. `lagMs` is the publish-to-availability delay in milliseconds.
    - `status` 'fresh' | 'current' | 'archival' | 'stale' | 'degraded' | 'unknown', required
    - `asOf` string, required
    - `sourcePublishedAt` string, nullable
    - `lagMs` integer, nullable
  - `materialization` MaterializationMetadata
    - `parserVersion` string, required
    - `materializationVersion` string, required
  - `sourceRights` SourceRightsMetadata
    - `source` string, required
    - `sourceLabel` string
    - `posture` 'public_safe' | 'contract_gated' | 'internal_only' | 'inventory_only' | 'review_required', required
    - `publicAvailability` 'public' | 'contract_gated' | 'internal_only' | 'inventory_only', required
    - `contractStatus` 'approved' | 'review_required' | 'restricted' | 'prohibited' | 'expired', required
    - `restrictions` string[]
    - `notes` string, nullable
  - `methodology` MethodologyMetadata
    - `id` string, required
    - `version` string, required
    - `summary` string, required
    - `confidence` 'high' | 'medium' | 'low', required
    - `launchState` 'experimental' | 'beta' | 'ga', required
    - `inputs` string[]
    - `validation` object
  - `revision` RevisionMetadata
    - `sourcePublishedAt` string, nullable
    - `retrievedAt` string, required
    - `vintageId` string, nullable
    - `revisedFrom` string, nullable
  - `degradedState` DegradedState
    - `code` string, required
    - `message` string, required
    - `retryable` boolean, required
    - `missingCapabilities` string[]
    - `fallbackUsed` string[]
  - `requestId` string
  - `traceparent` string

## Other responses

- `default`: Contract-aware error response

---

[API](https://skmtc.dev/turos/apis/turos-api.md) · [All operations](https://skmtc.dev/turos/apis/turos-api/llms.txt) · [OpenAPI document](https://skmtc.dev/turos/apis/turos-api/revisions/a68d3ec80a56?raw)
