Read Live Algorithm
Insights
Request
Fetch the insights of a live algorithm for the project Id and steps provided. The /live/insights/read API accepts requests in the following format:
ReadLiveInsightsRequest Model - Request to read insights from a live algorithm. | |
|---|---|
| start | integer Starting index of the insights to be fetched. Required if end > 100. |
| end | integer Last index of the insights to be fetched. Note that end - start must be less than 100. |
| projectId | integer Id of the project from which to read the live algorithm. |
| Example |
{
"start": 0,
"end": 100,
"projectId": 23456789
}
|
Responses
The /live/insights/read API provides a response in the following format:
200 Success
LiveInsightsResponse Model - Contains insights and the number of insights of the live algorithm in the request criteria. | |
|---|---|
| insights | Insight Array Collection of insights. |
| length | integer Total number of returned insights. |
| success | boolean Indicate if the API request was successful. |
| Example |
{
"insights": [
{
"id": "string",
"groupId": "string",
"sourceModel": "string",
"generatedTime": "string",
"createdTime": 0,
"closeTime": 0,
"symbol": "string",
"ticker": "string",
"type": "price",
"reference": "string",
"referenceValueFinal": "string",
"direction": "down",
"period": 0,
"magnitude": 0,
"confidence": 0,
"weight": 0,
"scoreIsFinal": true,
"scoreDirection": 0,
"scoreMagnitude": 0,
"estimatedValue": 0,
"tag": "2021-11-26T15:18:27.693Z"
}
],
"length": 0,
"success": true
}
|
Insight Model - Insight struct for emitting new prediction. | |
|---|---|
| id | string Insight ID. |
| groupId | string ID of the group of insights. |
| sourceModel | string Name of the model that sourced the insight. |
| generatedTime | string Gets the utc unixtime this insight was generated. |
| createdTime | number Gets the utc unixtime this insight was created. |
| closeTime | number Gets the utc unixtime this insight was closed. |
| symbol | string Gets the symbol ID this insight is for. |
| ticker | string Gets the symbol ticker this insight is for. |
| type | string Enum Gets the type of insight, for example, price or volatility. Options : ['price', 'volatility'] |
| reference | string Gets the initial reference value this insight is predicting against. |
| referenceValueFinal | string Gets the final reference value, used for scoring, this insight is predicting against. |
| direction | string Enum Gets the predicted direction, down, flat or up. Options : ['down', 'flat', 'up'] |
| period | number Gets the period, in seconds, over which this insight is expected to come to fruition. |
| magnitude | number Gets the predicted percent change in the insight type (price/volatility). This value can be null. |
| confidence | number Gets the confidence in this insight. This value can be null. |
| weight | number Gets the portfolio weight of this insight. This value can be null. |
| scoreIsFinal | boolean Gets whether or not this is the insight's final score. |
| scoreDirection | number Gets the direction score. |
| scoreMagnitude | number Gets the magnitude score. |
| estimatedValue | number Gets the estimated value of this insight in the account currency. |
| tag | string($float) The insight's tag containing additional information. |
| Example |
{
"id": "string",
"groupId": "string",
"sourceModel": "string",
"generatedTime": "string",
"createdTime": 0,
"closeTime": 0,
"symbol": "string",
"ticker": "string",
"type": "price",
"reference": "string",
"referenceValueFinal": "string",
"direction": "down",
"period": 0,
"magnitude": 0,
"confidence": 0,
"weight": 0,
"scoreIsFinal": true,
"scoreDirection": 0,
"scoreMagnitude": 0,
"estimatedValue": 0,
"tag": "2021-11-26T15:18:27.693Z"
}
|
401 Authentication Error
UnauthorizedError Model - Unauthorized response from the API. Key is missing, invalid, or timestamp is too old for hash. | |
|---|---|
| www_authenticate | string Header |
Examples
The following example demonstates creating, reading, updating, and listing live algorithms of a project through the cloud API.
from base64 import b64encode
from hashlib import sha256
from time import time
from requests import get, post
BASE_URL = 'https://www.quantconnect.com/api/v2/'
# You need to replace these with your actual credentials.
# You can request your credentials at https://www.quantconnect.com/settings/
# You can find our organization ID at https://www.quantconnect.com/organization/
USER_ID = 0
API_TOKEN = '____'
ORGANIZATION_ID = '____'
def get_headers():
# Get timestamp
timestamp = f'{int(time())}'
time_stamped_token = f'{API_TOKEN}:{timestamp}'.encode('utf-8')
# Get hased API token
hashed_token = sha256(time_stamped_token).hexdigest()
authentication = f'{USER_ID}:{hashed_token}'.encode('utf-8')
authentication = b64encode(authentication).decode('ascii')
# Create headers dictionary.
return {
'Authorization': f'Basic {authentication}',
'Timestamp': timestamp
}
# Authenticate to verify credentials
response = post(f'{BASE_URL}/authenticate', headers = get_headers())
print(response.json())
# --------------------
### Create Live Algorithm
# Define placeholder IDs for compilation and node (replace with actual values)
project_id = 12345678
compile_id = "compile_id..."
node_id = "node_id..."
# Prepare the data payload for creating a live algorithm with necessary details
payload = {
"versionId": "-1", # Use the latest version of the algorithm
"projectId": project_id, # ID of the project to deploy as a live algorithm
"compileId": compile_id, # Compilation ID for the algorithm code
"nodeId": node_id, # Node ID where the algorithm will run
"brokerage": { # Brokerage configuration for live trading
"id": "QuantConnectBrokerage", # Brokerage identifier
"user": "", # Brokerage username (replace with actual value)
"password": "", # Brokerage password (replace with actual value)
"environment": "live-paper", # Trading environment (live or paper)
"account": "" # Brokerage account ID (replace with actual value)
},
"dataProviders": { # Data provider configuration
"QuantConnectBrokerage": {
"id": "QuantConnectBrokerage" # Data provider identifier
}
},
"parameters": {}, # Optional algorithm parameters (empty in this example)
"notification": {} # Optional notification settings (empty in this example)
}
# Send a POST request to the /live/create endpoint to deploy the algorithm
response = post(f'{BASE_URL}/live/create', headers=get_headers(), json=data)
# Parse the JSON response into python managable dict from the API
result = response.json()
# Extract the deploy ID from the response for future operations
deploy_id = result['deployId']
# Check if the request was successful and print the result
if result['success']:
print("Live Algorithm Created Successfully:")
print(result)
### Read Live Algorithm Statistics
# Prepare data payload with project and deploy IDs to fetch statistics
payload = {
"projectId": project_id, # ID of the project
"deployId": deploy_id # ID of the deployed live algorithm
}
# Send a POST request to the /live/read endpoint to get algorithm statistics
response = post(f'{BASE_URL}/live/read', headers=get_headers(), json=payload)
# Parse the JSON response into python managable dict
result = response.json()
# Check if the request was successful and print the statistics
if result['success']:
print("Live Algorithm Statistics:")
print(result)
### Liquidate Live Algorithm
# Prepare data payload with project ID to liquidate the algorithm
payload = {
"projectId": project_id # ID of the project to liquidate
}
# Send a POST request to the /live/update/liquidate endpoint to liquidate
response = post(f'{BASE_URL}/live/update/liquidate', headers=get_headers(), json=payload)
# Parse the JSON response into python managable dict
result = response.json()
# Check if the request was successful and print the result
if result['success']:
print("Live Algorithm Liquidated Successfully:")
print(result)
### Stop Live Algorithm
# Prepare data payload with project ID to stop the algorithm
payload = {
"projectId": project_id # ID of the project to stop
}
# Send a POST request to the /live/update/stop endpoint to stop the algorithm
response = post(f'{BASE_URL}/live/update/stop', headers=get_headers(), json=payload)
# Parse the JSON response into python managable dict
result = response.json()
# Check if the request was successful and print the result
if result['success']:
print("Live Algorithm Stopped Successfully:")
print(result)
### List Live Algorithms
# Prepare data payload with filters for listing live algorithms
payload = {
"status": "Running", # Filter to show only running algorithms
"start": 1717801200, # Start time (Unix timestamp) for the list range
"end": 1743462000 # End time (Unix timestamp) for the list range
}
# Send a POST request to the /live/list endpoint to list algorithms
response = post(f'{BASE_URL}/live/list', headers=get_headers(), json=payload)
# Parse the JSON response into python managable dict
result = response.json()
# Check if the request was successful and print the list
if result['success']:
print("List of Live Algorithms:")
print(result)