Aperiodic Factors
Get StartedPricingFactor CatalogPerformanceTeam
Talk to us
Aperiodic · API ReferenceREST · v1
REST API

API Documentation

Programmatic access to cross-sectional factors, multi-factor portfolios and risk overlays. Authenticate with your API key and pull point-in-time factor data, live weights and returns as JSON.

Base URL
/api/v1
Auth
X-API-KEY
Format
JSON
Version
1.1.2
Request API accessAlready have a key? Enter it under any endpoint to run a live request.

Authentication

X-API-KEY(apiKey in header)

API key obtained from your account settings

GET/portfolio/live-weights

Portfolio / Weights Live

Retrieves the most recent weights for a specific portfolio. The current default is as_of=latest. On May 29, 2026, the default will change to as_of=close. close returns the end-of-day value from the previous trading day, identical to the last row of the historical-weights endpoint, and is the option we recommend building on for point-in-time consistency. Please be advised that we do not recommend using as_of=latest, only in cases when one missed the UTC midnight rebalancing event by a substantial margin (10+ hours).

Query Parameters

portfolioreqstring
string

Portfolio Template Identifier (eg. momentum, composite-7)

smoothingstring
string

Portfolio smoothing window for the data. Valid values are 0 (no smoothing), 5, 10, 15, 20, or 30 days. If not specified, uses the portfolio's default smoothing. Invalid values will return a 400 error. Please see Catalog for default smoothing windows and available smoothing options for each portfolio.

0510152030
exchangestring
string

Exchange constraint for portfolio data. Valid options are: unconstrained (default), binance, okx. If not specified, defaults to unconstrained.

unconstrainedbinanceokxhyperliquid
Default: unconstrained
as_ofstring
string

Controls which live snapshot is returned. `latest` is the current default. On May 29, 2026, the default will change to `close`. `close` returns the end-of-day value from the previous trading day — identical to the last row of the historical-weights endpoint — and is the option we recommend building on for point-in-time consistency. Please be advised that we do not recommend using `as_of=latest`, only in cases when one missed the UTC midnight rebalancing event by a substantial margin (10+ hours). `latest` returns the most recent intraday snapshot, updated approximately 5 minutes past each hour.

closelatest
Default: latest

Successful response

Schema
datanumber[]

Latest portfolio weights data

indexstring

Date of the latest weights

columnsstring[]

Asset names corresponding to the weights

createdAtstring<date-time>

ISO 8601 timestamp of when the data was created

Example
{
  "data": [
    0.25,
    0.35,
    0.15,
    0.25
  ],
  "index": "2023-06-30",
  "columns": [
    "BTC",
    "ETH",
    "SOL",
    "AVAX"
  ],
  "createdAt": "2023-06-30T15:30:00Z"
}
curl
curl -H "X-API-KEY: YOUR_KEY" \
  "/api/v1/portfolio/live-weights?portfolio=<portfolio>&smoothing=0&exchange=unconstrained&as_of=latest"
Authentication
GET/api/v1/portfolio/live-weights?exchange=unconstrained&as_of=latest
Response will appear here
GET/portfolio/historical-weights

Portfolio / Weights Historical

Retrieves historical weights for a specific portfolio over a date range. Returns end-of-day (EOD) values.

Query Parameters

portfolioreqstring
string

Portfolio Template Identifier (eg. momentum, composite-7)

smoothingstring
string

Portfolio smoothing window for the data. Valid values are 0 (no smoothing), 5, 10, 15, 20, or 30 days. If not specified, uses the portfolio's default smoothing. Invalid values will return a 400 error. Please see Catalog for default smoothing windows and available smoothing options for each portfolio.

0510152030
exchangestring
string

Exchange constraint for portfolio data. Valid options are: unconstrained (default), binance, okx. If not specified, defaults to unconstrained.

unconstrainedbinanceokxhyperliquid
Default: unconstrained
start_datestring<date>
string<date>

Filter data to only include dates on or after this date (ISO format: YYYY-MM-DD)

end_datestring<date>
string<date>

Filter data to only include dates on or before this date (ISO format: YYYY-MM-DD)

Successful response

Schema
dataarray[]

Historical portfolio weights data

indexstring[]

Date indices for the weights data

columnsstring[]

Asset names corresponding to the weights

curl
curl -H "X-API-KEY: YOUR_KEY" \
  "/api/v1/portfolio/historical-weights?portfolio=<portfolio>&smoothing=0&exchange=unconstrained&start_date=<start_date>&end_date=<end_date>"
Suggestions shown — any valid value accepted
Suggestions shown — any valid value accepted
Authentication
GET/api/v1/portfolio/historical-weights?exchange=unconstrained
Response will appear here
GET/portfolio/factors

Portfolio / Raw Factor

Retrieves factor data for specific tickers within a single factor portfolio over a date range. Returns end-of-day (EOD) values.

Query Parameters

idreqstring
string

Portfolio Factor Identifier without the universe specifier (eg. momentum instead of momentum.20)

tickersreqstring
string

Comma-separated list of ticker symbols (e.g., BTC,ETH,SOL).

smoothingstring
string

Portfolio smoothing window for the data. Valid values are 0 (no smoothing), 5, 10, 15, 20, or 30 days. If not specified, uses the portfolio's default smoothing. Invalid values will return a 400 error. Please see Catalog for default smoothing windows and available smoothing options for each portfolio.

0510152030
start_datestring<date>
string<date>

Filter data to only include dates on or after this date (ISO format: YYYY-MM-DD)

end_datestring<date>
string<date>

Filter data to only include dates on or before this date (ISO format: YYYY-MM-DD)

Successful response

Schema
dataarray[]

Factor data for the specified tickers

indexstring[]

Date indices for the factor data

columnsstring[]

Ticker symbols corresponding to the factor data

Example
{
  "data": [
    [
      0.45,
      0.67,
      0.89
    ],
    [
      0.23,
      0.2,
      0.8
    ],
    [
      0.87,
      0.34,
      0.56
    ]
  ],
  "index": [
    "2023-01-01",
    "2023-01-02",
    "2023-01-03"
  ],
  "columns": [
    "BTC",
    "ETH",
    "SOL"
  ]
}
curl
curl -H "X-API-KEY: YOUR_KEY" \
  "/api/v1/portfolio/factors?id=<id>&tickers=<tickers>&smoothing=0&start_date=<start_date>&end_date=<end_date>"
Suggestions shown — any valid value accepted
Suggestions shown — any valid value accepted
Authentication
GET/api/v1/portfolio/factors
Response will appear here
GET/portfolio/factors-live

Portfolio / Raw Factor Live

Retrieves the most recent factor data for specific tickers within a single factor portfolio. The current default is as_of=latest. On May 29, 2026, the default will change to as_of=close. close returns the end-of-day value from the previous trading day and is the option we recommend building on for point-in-time consistency. Please be advised that we do not recommend using as_of=latest, only in cases when one missed the UTC midnight rebalancing event by a substantial margin (10+ hours).

Query Parameters

idreqstring
string

Portfolio Factor Identifier without the universe specifier (eg. momentum instead of momentum.20)

tickersreqstring
string

Comma-separated list of ticker symbols (e.g., BTC,ETH,SOL).

smoothingstring
string

Portfolio smoothing window for the data. Valid values are 0 (no smoothing), 5, 10, 15, 20, or 30 days. If not specified, uses the portfolio's default smoothing. Invalid values will return a 400 error. Please see Catalog for default smoothing windows and available smoothing options for each portfolio.

0510152030
as_ofstring
string

Controls which live snapshot is returned. `latest` is the current default. On May 29, 2026, the default will change to `close`. `close` returns the end-of-day value from the previous trading day — identical to the last row of the historical-weights endpoint — and is the option we recommend building on for point-in-time consistency. Please be advised that we do not recommend using `as_of=latest`, only in cases when one missed the UTC midnight rebalancing event by a substantial margin (10+ hours). `latest` returns the most recent intraday snapshot, updated approximately 5 minutes past each hour.

closelatest
Default: latest

Successful response

Schema
datanumber[]

Latest factor data for the specified tickers

indexstring

Date of the latest factor data

columnsstring[]

Ticker symbols corresponding to the factor data

createdAtstring<date-time>

ISO 8601 timestamp of when the data was created

Example
{
  "data": [
    0.45,
    0.67,
    0.89
  ],
  "index": "2023-01-03",
  "columns": [
    "BTC",
    "ETH",
    "SOL"
  ]
}
curl
curl -H "X-API-KEY: YOUR_KEY" \
  "/api/v1/portfolio/factors-live?id=<id>&tickers=<tickers>&smoothing=0&as_of=latest"
Authentication
GET/api/v1/portfolio/factors-live?as_of=latest
Response will appear here
GET/portfolio/tickers

Portfolio / Tickers

Retrieves the list of ticker symbols available in a specific portfolio. Multi-Factor portfolios cannot be used with 'full' universe size.

Query Parameters

idreqstring
string

Portfolio Factor Identifier without the universe specifier (eg. momentum instead of momentum.20)

universe_sizereqstring
string

Universe size for the portfolio (e.g., 20, 30, 40) or 'full' to get all tickers. Note: Multi-Factor portfolios cannot use 'full' universe size.

exchangestring
string

Exchange constraint for portfolio data. Valid options are: unconstrained (default), binance, okx. If not specified, defaults to unconstrained.

unconstrainedbinanceokxhyperliquid
Default: unconstrained

Successful response

Schema
tickersstring[]

List of ticker symbols available in the portfolio

Example
{
  "tickers": [
    "BTC",
    "ETH",
    "SOL",
    "AVAX",
    "MATIC"
  ]
}
curl
curl -H "X-API-KEY: YOUR_KEY" \
  "/api/v1/portfolio/tickers?id=<id>&universe_size=<universe_size>&exchange=unconstrained"
Authentication
GET/api/v1/portfolio/tickers?exchange=unconstrained
Response will appear here
GET/portfolio/universe

Portfolio / Universe

Retrieves the universe data for a portfolio, showing which assets are included in the portfolio over time. The data is returned as binary values (1 for included, null for no data). Use the size parameter to specify the portfolio size (e.g., 20, 30, 40).

Query Parameters

start_datestring<date>
string<date>

Filter data to only include dates on or after this date (ISO format: YYYY-MM-DD)

end_datestring<date>
string<date>

Filter data to only include dates on or before this date (ISO format: YYYY-MM-DD)

sizereqstring
string

Portfolio size - number of assets to include. Must be one of: 20, 30, or 40

203040
exchangestring
string

Exchange constraint for portfolio data. Valid options are: unconstrained (default), binance, okx. If not specified, defaults to unconstrained.

unconstrainedbinanceokxhyperliquid
Default: unconstrained

Successful response

Schema
dataarray[]

Universe data showing which assets are included (1) in the portfolio over time. Null values indicate no data available.

indexstring[]

Date indices for the universe data

columnsstring[]

Asset names corresponding to the universe data

Example
{
  "data": [
    [
      1,
      1,
      0,
      1
    ],
    [
      1,
      1,
      1,
      1
    ],
    [
      0,
      1,
      1,
      1
    ]
  ],
  "index": [
    "2024-01-01",
    "2024-01-02",
    "2024-01-03"
  ],
  "columns": [
    "BTC",
    "ETH",
    "SOL",
    "AVAX"
  ]
}
curl
curl -H "X-API-KEY: YOUR_KEY" \
  "/api/v1/portfolio/universe?start_date=<start_date>&end_date=<end_date>&size=20&exchange=unconstrained"
Suggestions shown — any valid value accepted
Suggestions shown — any valid value accepted
Authentication
GET/api/v1/portfolio/universe?size=20&exchange=unconstrained
Response will appear here
GET/portfolio/returns

Portfolio / Returns

Retrieves returns data for a specific portfolio over a date range. Returns end-of-day (EOD) values.

Query Parameters

portfolioreqstring
string

Portfolio Template Identifier (eg. momentum, composite-7)

smoothingstring
string

Portfolio smoothing window for the data. Valid values are 0 (no smoothing), 5, 10, 15, 20, or 30 days. If not specified, uses the portfolio's default smoothing. Invalid values will return a 400 error. Please see Catalog for default smoothing windows and available smoothing options for each portfolio.

0510152030
exchangestring
string

Exchange constraint for portfolio data. Valid options are: unconstrained (default), binance, okx. If not specified, defaults to unconstrained.

unconstrainedbinanceokxhyperliquid
Default: unconstrained
start_datestring<date>
string<date>

Filter data to only include dates on or after this date (ISO format: YYYY-MM-DD)

end_datestring<date>
string<date>

Filter data to only include dates on or before this date (ISO format: YYYY-MM-DD)

Successful response

Example
{
  "data": [
    0,
    0.0234,
    -0.0156,
    0.0456,
    0.0123,
    -0.0089,
    0.0345
  ],
  "index": [
    "2023-01-01",
    "2023-01-02",
    "2023-01-03",
    "2023-01-04",
    "2023-01-05",
    "2023-01-06",
    "2025-10-07"
  ],
  "columns": [
    "returns"
  ]
}
curl
curl -H "X-API-KEY: YOUR_KEY" \
  "/api/v1/portfolio/returns?portfolio=<portfolio>&smoothing=0&exchange=unconstrained&start_date=<start_date>&end_date=<end_date>"
Suggestions shown — any valid value accepted
Suggestions shown — any valid value accepted
Authentication
GET/api/v1/portfolio/returns?exchange=unconstrained
Response will appear here
GET/portfolio/risk-overlay

Portfolio / Risk Overlay Hist.

Retrieves risk overlay time series data for a specific portfolio. Risk overlays are portfolio-specific factor risk overlays. Returns end-of-day (EOD) values.

Query Parameters

portfolioreqstring
string

Portfolio Template Identifier (eg. momentum, composite-7)

overlayreqstring
string

Risk overlay identifier - a portfolio-specific factor risk overlay

start_datestring<date>
string<date>

Filter data to only include dates on or after this date (ISO format: YYYY-MM-DD)

end_datestring<date>
string<date>

Filter data to only include dates on or before this date (ISO format: YYYY-MM-DD)

Successful response

Schema
datanumber[]

Transformed factor data points

indexstring[]

Date indices for the data points

Example
{
  "data": [
    0.05,
    0.12,
    0.08,
    0.15,
    0.1,
    0.18,
    0.14
  ],
  "index": [
    "2023-01-01",
    "2023-01-02",
    "2023-01-03",
    "2023-01-04",
    "2023-01-05",
    "2023-01-06",
    "2025-10-07"
  ]
}
curl
curl -H "X-API-KEY: YOUR_KEY" \
  "/api/v1/portfolio/risk-overlay?portfolio=<portfolio>&overlay=<overlay>&start_date=<start_date>&end_date=<end_date>"
Suggestions shown — any valid value accepted
Suggestions shown — any valid value accepted
Authentication
GET/api/v1/portfolio/risk-overlay
Response will appear here
GET/portfolio/risk-overlay-live

Portfolio / Risk Overlay Live

Retrieves the latest risk overlay data point for a specific portfolio and overlay. Risk overlays are portfolio-specific factor risk overlays. Updated hourly with fresh data available 5 minutes past the hour. The current default is as_of=latest. On May 29, 2026, the default will change to as_of=close. close returns the end-of-day value from the previous trading day and is the option we recommend building on for point-in-time consistency.

Query Parameters

portfolioreqstring
string

Portfolio Template Identifier (eg. momentum, composite-7)

overlayreqstring
string

Risk overlay identifier - a portfolio-specific factor risk overlay

as_ofstring
string

Controls which live snapshot is returned. `latest` is the current default. On May 29, 2026, the default will change to `close`. `close` returns the end-of-day value from the previous trading day — identical to the last row of the historical-weights endpoint — and is the option we recommend building on for point-in-time consistency. Please be advised that we do not recommend using `as_of=latest`, only in cases when one missed the UTC midnight rebalancing event by a substantial margin (10+ hours). `latest` returns the most recent intraday snapshot, updated approximately 5 minutes past each hour.

closelatest
Default: latest

Successful response

Schema
datanumber | null

Latest risk overlay data point

indexstring

Date of the latest risk overlay data

createdAtstring<date-time>

ISO 8601 timestamp of when the data was created

Example
{
  "data": 0.15,
  "index": "2025-10-07"
}
curl
curl -H "X-API-KEY: YOUR_KEY" \
  "/api/v1/portfolio/risk-overlay-live?portfolio=<portfolio>&overlay=<overlay>&as_of=latest"
Authentication
GET/api/v1/portfolio/risk-overlay-live?as_of=latest
Response will appear here
GET/risk-regime

Risk Regime Historical

Retrieves risk regime time series data. Risk regimes are factor risk overlays applicable to all portfolios, including custom ones. Returns end-of-day (EOD) values.

Query Parameters

overlayreqstring
string

Risk overlay identifier - a portfolio-specific factor risk overlay

start_datestring<date>
string<date>

Filter data to only include dates on or after this date (ISO format: YYYY-MM-DD)

end_datestring<date>
string<date>

Filter data to only include dates on or before this date (ISO format: YYYY-MM-DD)

Successful response

Schema
datanumber[]

Transformed factor data points

indexstring[]

Date indices for the data points

Example
{
  "data": [
    0.05,
    0.12,
    0.08,
    0.15,
    0.1,
    0.18,
    0.14
  ],
  "index": [
    "2023-01-01",
    "2023-01-02",
    "2023-01-03",
    "2023-01-04",
    "2023-01-05",
    "2023-01-06",
    "2025-10-07"
  ]
}
curl
curl -H "X-API-KEY: YOUR_KEY" \
  "/api/v1/risk-regime?overlay=<overlay>&start_date=<start_date>&end_date=<end_date>"
Suggestions shown — any valid value accepted
Suggestions shown — any valid value accepted
Authentication
GET/api/v1/risk-regime
Response will appear here
GET/risk-regime-live

Risk Regime Live

Retrieves the latest risk regime data point. Risk regimes are factor risk overlays applicable to all portfolios, including custom ones. Updated hourly with fresh data available 5 minutes past the hour.

Query Parameters

overlayreqstring
string

Risk overlay identifier - a portfolio-specific factor risk overlay

Successful response

Schema
datanumber | null

Latest risk overlay data point

indexstring

Date of the latest risk overlay data

createdAtstring<date-time>

ISO 8601 timestamp of when the data was created

Example
{
  "data": 0.15,
  "index": "2025-10-07"
}
curl
curl -H "X-API-KEY: YOUR_KEY" \
  "/api/v1/risk-regime-live?overlay=<overlay>"
Authentication
GET/api/v1/risk-regime-live
Response will appear here
GET/price

Price / Closing

Retrieve closing price data for one or more cryptocurrency tickers. Supports single ticker requests (returns legacy format for backward compatibility) or comma-separated multiple ticker requests (returns dataframe format similar to historical-weights endpoint). Single ticker (legacy): Null values are filtered out along with their corresponding dates. Multiple tickers (dataframe): Null values are preserved in the matrix, ensuring consistent date ranges across all tickers.

Query Parameters

tickerreqstring
string

Ticker symbol(s). Can be a single ticker (e.g., BTC) or comma-separated list (e.g., BTC,ETH,SOL). Whitespace around commas is automatically trimmed.

start_datestring<date>
string<date>

Filter data to only include dates on or after this date (ISO format: YYYY-MM-DD)

end_datestring<date>
string<date>

Filter data to only include dates on or before this date (ISO format: YYYY-MM-DD)

Successful response

Schema
any
Example

Single ticker response (legacy format)

{
  "data": [
    45000.25,
    46700.5,
    47200.75,
    46800.25,
    48200,
    49100.5,
    48700.25
  ],
  "index": [
    "2023-01-01",
    "2023-01-02",
    "2023-01-03",
    "2023-01-04",
    "2023-01-05",
    "2023-01-06",
    "2025-10-07"
  ]
}
curl
curl -H "X-API-KEY: YOUR_KEY" \
  "/api/v1/price?ticker=<ticker>&start_date=<start_date>&end_date=<end_date>"
Suggestions shown — any valid value accepted
Suggestions shown — any valid value accepted
Authentication
GET/api/v1/price
Response will appear here
Aperiodic Factors

Institutional cross-sectional alpha factors for digital-asset desks — extracted from liquidity, flow and market microstructure metrics.

aperiodic.io
Registered office
Aperiodic Limited
136 Capel StreetDublin, D01 T2C9Ireland
Factors
  • Get started
  • Pricing
  • Factor catalog
  • Performance
Data & API
  • API docs
  • Data room
  • Request a data sample
Company
  • Team
  • Contact
  • Talk to us
  • Terms of service
  • Privacy policy

Provided for informational purposes only; not investment advice, a recommendation, or an offer to transact. Past performance is not indicative of future results.

Registered in Ireland · Company No. 815273

© 2026 Aperiodic Limited