Claim Your Free API KEY

Please fill in the details in the form below. These will help us verify your professional background and understand your intended use case.

A Signal Sigma account is required to use this feature.

Signal Sigma API Documentation

Last Updated: April 21, 2026

This is a comprehensive guide to the Signal Sigma API. The API provides endpoints for querying ticker lists, price history, and specific metrics from financial datasets. It is designed for authenticated users with rate-limited access.

The API is built with FastAPI and includes automatic interactive documentation. For machine-readable access (e.g., for AIs or code generators), use the OpenAPI JSON spec at: https://signal-sigma-api.com/openapi.json

For interactive exploration (human-friendly UI with try-it-out features) use Swagger UI at: https://signal-sigma-api.com/docs


Introduction

The Signal Sigma API allows authorized users to retrieve financial data such as ticker lists, historical prices, and specific metrics. All endpoints are prefixed with /api and require authentication via API key.

Base URL

Key Features

  • Authentication: Required for all endpoints (Bearer token in Authorization header).

  • Rate Limiting: Per-user, based on your assigned limit (e.g., 60 calls/min). Exceeding triggers a 429 error with details.

  • Response Format: JSON, with "status" field for success/error.

  • Error Handling: Standard HTTP codes (e.g., 400 for invalid params, 401 for auth issues, 404 for not found, 429 for rate limit, 500 for server errors).

Authentication

All requests must include an API key in the header: Authorization: Bearer <your_api_key>

  • Keys are manually assigned (contact support@signal-sigma.com / complete the form at the top of this page to request access)

  • Keys expire (check your assigned expiry date).

  • Invalid/expired keys return 401 Unauthorized.

Example header in code:

Authorization: Bearer <API_KEY>

Endpoints

All endpoints are under /api/ and use GET requests (query parameters). Responses are JSON.

1. /api/test

Method: GET

Description: A simple health check endpoint to verify the server is live and your API key is valid. Returns a success message with your user info. Useful for testing connectivity and auth.

Parameters: None (required).

Authentication: Required.

Rate Limit: Applies per your key's limit.

Response Schema:

  • status (string): "success"

  • message (string): Confirmation text

  • user (string): Your associated user/email

Example Request:

curl -H "Authorization: Bearer <YOUR_API_KEY>" https://signal-sigma-api.com/api/test

Example Response (200 OK):

{ "status": "success", "message": "Server is live", "user": "YOUR_EMAIL_ADDRESS" }

Error Examples:

  • 401 (Invalid key): {"detail": "Invalid API key"}

  • 429 (Rate exceeded): {"detail": "Rate limit exceeded. You are allowed 60 calls per minute. Please wait and try again, or contact support@signal-sigma.com to request a higher limit."}

2. /api/ticker_list

Method: GET

Description: Returns a full list of available tickers with metadata. Useful for discovering queryable symbols. No parameters needed. Handles missing values as null.

Parameters: None.

Authentication: Required.

Rate Limit: Applies per your key's limit.

Response Schema:

  • status (string): "success"

  • tickers (array of objects): List of ticker records

    • ticker (string): Symbol (e.g., "AAPL")

    • date (string): Date associated

    • assettype (string): Type (e.g., "Stock", "Crypto")

    • sector (string): Sector (e.g., "Tech")

    • company_name (string): Full name

    • isin (string): ISIN code

    • main_currency (string): Currency (e.g., "USD")

  • count (integer): Number of records

Example Request:

curl -H "Authorization: Bearer <YOUR_API_KEY>" https://signal-sigma-api.com/api/ticker_list

Example Response (200 OK):

{

"tickers": [

{

"ticker": "AAPL",

"date": "2026-03-13",

"assettype": "Stock",

"sector": "Technology",

"company_name": "Apple Inc.",

"isin": "US0378331005",

"main_currency": "USD"

},

{

"ticker": "BTC-USD",

"date": "2026-03-13",

"assettype": "Crypto",

"sector": "Cryptocurrency",

"company_name": "Bitcoin",

"isin": null,

"main_currency": "USD"

}

],

"count": 150

}

3. /api/price_history

Method: GET

Description: Returns historical OHLCV (Open-High-Low-Close-Volume) data plus dividends and splits for a specific ticker.

Parameters:

  • ticker (string, required): Symbol (e.g., "AAPL").


Authentication: Required.

Rate Limit: Applies per your key's limit.

Response Schema:

  • status (string): "success"

  • ticker (string): Normalized ticker

  • data (array of objects): Historical records

    • date (string): Date (YYYY-MM-DD)

    • high (number): High price

    • low (number): Low price

    • open (number): Open price

    • close (number): Close price

    • volume (number): Volume

    • dividend (number): Dividend amount

    • split (number): Split coefficient

  • record_count (integer): Number of records

  • user (string): Your user/email

Example Request:

curl -H "Authorization: Bearer <YOUR_API_KEY>" "https://signal-sigma-api.com/api/price_history?ticker=AAPL"

Example Response (200 OK):

{

"ticker": "AAPL",

"data": [

{

"date": "2026-03-12",

"high": 175.25,

"low": 172.1,

"open": 173.8,

"close": 174.95,

"volume": 65000000,

"dividend": 0.24,

"split": 1.0

},

{

"date": "2026-03-11",

"high": 176.0,

"low": 173.5,

"open": 174.0,

"close": 175.0,

"volume": 62000000,

"dividend": null,

"split": null

},

// ... more historical records

],

"record_count": 252,

}

4. /api/data

Method: GET

Description: Returns a single metric value for a ticker on a specific date (or latest available). Handles missing values as null. Metric can be either formatted as displayed in the app (e.g., "Analyst Price Target") or using a snake case version — preferred — in accordance to the table below (e.g., "analysttargetprice")

Parameters:

  • ticker (string, required): Symbol (e.g., "AAPL").

  • metric (string, required): Metric name or snake case reference - see table below (e.g., "Analyst Price Target" or "analysttargetprice").

  • date (string, optional): YYYY-MM-DD. Defaults to latest available date if omitted.

  • Authentication: Required.

  • Rate Limit: Applies per your key's limit.

  • Response Schema:

    • status (string): "success"

    • ticker (string): Normalized ticker

    • date (string): Extracted date from file (YYYY-MM-DD)

    • metric_display (string): Human-readable metric name

    • value (any): The metric value (number, string, etc.)

    • user (string): Your user/email

Example Request (latest date):

curl -H "Authorization: Bearer <YOUR_API_KEY>" "https://signal-sigma-api.com/api/data?ticker=AAPL&metric=analysttargetprice"

Example Response (200 OK):

{

"ticker": "AAPL",

"date": "2026-03-13",

"metric": "Analyst Price Target",

"value": 295.5,

}

Example Request (specific date):

Error Examples:

  • 400 (Invalid metric): {"detail": "Metric 'invalid' not recognized. Please use a valid Display Metric or snake case Metric per the table below. Documentation and full list available at www.signal-sigma.com/api-docs"}

  • 404 (Ticker not found): {"detail": "Ticker 'INVALID' not found in data for 2026_03_13. Use /api/ticker_list to see available tickers."}

  • 404 (Date not found): {"detail": "No data found for date 2026-03-07. Try leaving 'date' blank to use the most recent available file, or check available dates via ticker_list or other methods."}

  • 400 (Column not found): {"detail": "Column 'analysttargetprice' not found in the data file. Please check the metric name. Full documentation at www.signal-sigma.com/api-docs"}


Demo Code Snippet: Calling the API in Python

Here's a complete Python example using requests to call most endpoints. Install with pip install requests.

import requests

BASE_URL = "https://signal-sigma-api.com/api"

API_KEY = “YOUR_API_KEY” # Replace with your actual key, format as “string”

headers = {

"Authorization": f"Bearer {API_KEY}"

}

def call_endpoint(endpoint, params=None):

url = f"{BASE_URL}/{endpoint}"

response = requests.get(url, headers=headers, params=params)

if response.status_code == 200:

return response.json()

else:

print(f"Error {response.status_code}: {response.json()['detail']}")

return None

# Example 1: Test

test_data = call_endpoint("test")

print("Test Response:", test_data)

# Example 2: Ticker List

ticker_list = call_endpoint("ticker_list")

print("Ticker Count:", ticker_list.get("count") if ticker_list else "Error")

# Example 3: Price History

history_params = {"ticker": "AAPL"}

history = call_endpoint("price_history", params=history_params)

print("History Records:", history.get("record_count") if history else "Error")

# Example 4: Data (latest date)

data_params = {"ticker": "AAPL", "metric": "Analyst Price Target"}

data_latest = call_endpoint("data", params=data_params)

print("Latest Metric Value:", data_latest.get("value") if data_latest else "Error")

# Example 4: Data (specific date)

data_specific_params = {"ticker": "AAPL", "metric": "analysttargetprice", "date": "2026-03-12"}

data_specific = call_endpoint("data", params=data_specific_params)

print("Specific Date Metric Value:", data_specific.get("value") if data_specific else "Error")

Metrics Table for Data Queries

Download a handy reference table listing every available data metric listed either as Display Metric or Table Metric (snake case). You can use either naming convention for your queries.

5. /backtest_list

  • Method: GET

  • Path: /api/backtest_list

  • Authentication: Required (Bearer token)

  • Description: Returns all backtests available to the authenticated user, including personal backtests and shared ones.

Parameters:

  • backtest_name (string): Optional. If provided, returns only the matching backtest (case-insensitive). If omitted, returns the full list of all available backtests for the user.

Rate Limit: Applies per your key's limit.

Response Schema (example):

backtests:

  • "backtest_name": "Enterprise" - Name of the backtest

  • "backtest_type": "Strategy" - "Strategy", "Signal Trace", "Measure Trace", or "Unknown"

  • "model_name": "Enterprise Strategy" - Model running the backtest

  • “backtest_description”: “New Backtest” - Description provided in the backtest generation field

  • “start_date”: “2013-01-01” - Simulation start date (earliest data point)

  • "last_updated": "2026-04-09" - Last date found in backtest history

  • "up_to_date": true - True if last_updated matches date of latest database update

  • "progress": "Backtest Running: [##########] 100% Complete" - last backtest engine progress message

  • "run_state": "complete" - Backtest status on server

  • "alert_flag": true - True if open orders or signal on last date detected (orange dot next to backtest in app)

“count”: 1 - Number of backtests returned in call

Example Request (all backtests):

curl -H "Authorization: Bearer <YOUR_API_KEY>" https://signal-sigma-api.com/api/backtest_list

Example Request (specific backtest, using URL encoding for the backtest_name parameter):

Example Response (200 OK):

{

"backtests": [

{

"backtest_name": "Utilities Valuations",

"backtest_type": "Measure Trace",

"model_name": "Duplicate Measure-Trace",

“backtest_description”: null,

“start_date”: “2011-01-02”,

"last_updated": "2026-04-09",

"up_to_date": true,

"progress": "Backtest Running: [##########] 100% Complete",

"run_state": "complete",

"alert_flag": false

}

],

"count": 1

}

6. /backtest_result

Method : GET

Path : /api/backtest_result

Description : Returns detailed backtest results for any Strategy, Signal-Trace, or Measure-Trace backtest. The endpoint intelligently locates the requested backtest data using your authenticated user email and then gets the appropriate info.

This is the main endpoint for retrieving live portfolio snapshots, open orders, performance metrics, transaction history, logs, and chart (Market Study) data from any backtest you own.

Important Notes:

  • Measure-Trace and Signal-Trace type backtests only support the chart output type. They do not contain portfolio positions, open orders, transactions, or log files. Requesting any other output type on these backtests will return an empty result with an error message.

  • If the backtest name is not found, a clear 404 error is returned with a suggestion to call /api/backtest_list first.

Parameters :

  • name (string, required): Exact name of the backtest (case-sensitive). Use /api/backtest_list to discover available names.

  • output (string, optional): Type of data to return. Valid values: portfolio, orders, returns, transactions, log, chart. Default = chart.

  • date (string, optional): Date in YYYY-MM-DD format.

    • For portfolio, orders, returns → defaults to the latest trading date (sourced from our database).

    • For transactions, log, chart → defaults to "all" (returns the complete history).

Authentication : Required (Bearer token).

Rate Limit : Applies per your key’s limit.

Response Schema :

  • backtest_name (string): The name you requested.

  • output_type (string): The output type that was processed (portfolio, orders, etc.).

  • date (string): The date actually used (either the one you provided or the computed default).

  • data (array): Array of records. Each record structure depends on the output type (see below).

  • record_count (integer): Number of records returned.

  • message (string, optional): Present only when no data is available.

Detailed Response Formats by Output Type

1. output=portfolio Returns current holdings + target allocation with valuation at close price.

2. output=orders Returns open orders (difference between target and current portfolio positions).

3. output=returns Returns performance statistics (drawdown, Sharpe, Calmar, etc.) grouped by time period.

4. output=transactions Full transaction history (or filtered to one date).

5. output=log All log entries (or filtered to one date).

6. output=chart (default) Market Study raw data.

Example Requests

# 1. Default: Chart (Market Study) for all dates in backtest

curl -H "Authorization: Bearer <YOUR_API_KEY>" "https://signal-sigma-api.com/api/backtest_result?name=Enterprise"

# 2. Portfolio at latest trading date

curl -H "Authorization: Bearer <YOUR_API_KEY>" "https://signal-sigma-api.com/api/backtest_result?name=Enterprise&output=portfolio"

# 3. Portfolio on specific date

curl -H "Authorization: Bearer <YOUR_API_KEY>" "https://signal-sigma-api.com/api/backtest_result?name=Enterprise&output=portfolio&date=2026-04-17"

# 4. All transactions

curl -H "Authorization: Bearer <YOUR_API_KEY>" "https://signal-sigma-api.com/api/backtest_result?name=Enterprise&output=transactions"

# 5. Open orders

curl -H "Authorization: Bearer <YOUR_API_KEY>" "https://signal-sigma-api.com/api/backtest_result?name=Enterprise&output=orders"

Example Response (output=portfolio)

{

"backtest_name": "Enterprise",

"output_type": "portfolio",

"date": "2026-04-17",

"data": [

{

"ticker": "GLD",

"amount": 40.0,

"target_amount": 40.0,

"ownership_price": 378.8376,

"days_held": 157,

"current_price": 445.88,

"value": 17835.2,

"target_value": 17835.2,

"amount_pct": 4.94,

"target_amount_pct": 4.94

},

{

"ticker": "TOTAL_CASH",

"amount": 228749.729275,

"target_amount": 235677.31375,

"ownership_price": 1.0,

"days_held": 7043,

"current_price": 1.0,

"value": 228749.729275,

"target_value": 235677.31375,

"amount_pct": 63.37,

"target_amount_pct": 65.29

}

],

"record_count": 4

}

Example Response when no data exists

{

"backtest_name": "Enterprise",

"output_type": "orders",

"date": "2026-04-17",

"data": [],

"record_count": 0,

"message": "No open orders at 2026-04-17"

}

Error Examples

  • 404 Backtest not found {"detail": "Backtest 'Enterprise' not found for user 'your_email@email.com'. Please call /api/backtest_list first to see all available backtests."}

  • 400 Invalid output type {"detail": "Invalid output type 'invalid'. Allowed values: ['portfolio', 'orders', 'returns', 'transactions', 'log', 'chart']"}

  • 500 Internal error {"detail": "Error executing portfolio for backtest 'Enterprise': ..."}