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
Production: https://signal-sigma-api.com/api/
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):
curl -H "Authorization: Bearer <YOUR_API_KEY>" "https://signal-sigma-api.com/api/data?ticker=AAPL&metric=analysttargetprice&date=2026-03-12"
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):
curl -H "Authorization: Bearer <YOUR_API_KEY>" "https://signal-sigma-api.com/api/backtest_list?backtest_name=Utilities%20Valuations"
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': ..."}