Algo Descriptors
Complete schema reference for Datafye Algo Descriptors.
Overview
An AlgoSpec defines your trading algorithm's execution environment, including:
Container image and execution parameters
Resource requirements (CPU, memory)
Data bindings to DataSpecs
Environment variables and secrets
Scheduling and lifecycle management
Schema
Root Structure
apiVersion: datafye.io/v1
kind: AlgoSpec
metadata:
name: <string>
description: <string>
mode: live | paper | backtest
container:
image: <string>
tag: <string>
command: [<list>]
args: [<list>]
env:
- name: <string>
value: <string>
resources:
limits:
cpu: <string>
memory: <string>
requests:
cpu: <string>
memory: <string>
data:
dataSpec: <string>
scheduling:
type: continuous | scheduled
schedule: <cron-expression>Field: apiVersion
apiVersionType: string
Required: Yes
Value:
datafye.io/v1Description: Schema version for this descriptor
Field: kind
kindType: string
Required: Yes
Value:
AlgoSpecDescription: Identifies this as an Algo Descriptor
Field: metadata
metadataType: object
Required: Yes
Description: Metadata about this algo
metadata.name
metadata.nameType: string
Required: Yes
Format: lowercase alphanumeric with hyphens (DNS-1123 subdomain)
Description: Unique identifier for this algo
Example:
momentum-strategy,mean-reversion-v2
metadata.description
metadata.descriptionType: string
Required: No
Description: Human-readable description of this algo
Example:
Momentum strategy with trailing stops
Field: mode
modeType: string
Required: Yes
Values:
live|paper|backtestDescription: Operating mode for this algo
live
Real-time production trading
paper
Paper trading with simulated execution
backtest
Historical backtesting
Field: container
containerType: object
Required: Yes
Description: Container configuration for algo execution
container.image
container.imageType: string
Required: Yes
Description: Container image name
Examples:
my-algo— Your own containerdatafye/python-algo— Datafye-provided container
container.tag
container.tagType: string
Required: No
Default:
latestDescription: Container image tag/version
Example:
v1.2.0,latest
container.command
container.commandType: array of strings
Required: No
Description: Entrypoint override
Example:
["/bin/sh"]
container.args
container.argsType: array of strings
Required: No
Description: Arguments to container entrypoint
Example:
["python", "algo.py", "--verbose"]
container.env
container.envType: array of env objects
Required: No
Description: Environment variables
Env object structure:
name: Environment variable namevalue: Environment variable value
Example:
Field: resources
resourcesType: object
Required: No
Description: Resource requirements and limits
resources.limits
resources.limitsType: object
Required: No
Description: Maximum resources the algo can use
resources.limits.cpu
Type: string
Required: No
Format:
<number>(cores) or<number>m(millicores)Description: CPU limit
Examples:
1,500m,2
resources.limits.memory
Type: string
Required: No
Format:
<number><unit>where unit isMi,Gi,M,GDescription: Memory limit
Examples:
512Mi,1Gi,2G
resources.requests
resources.requestsType: object
Required: No
Description: Minimum resources guaranteed for the algo
resources.requests.cpu
Type: string
Required: No
Format: Same as
resources.limits.cpuDescription: CPU request
resources.requests.memory
Type: string
Required: No
Format: Same as
resources.limits.memoryDescription: Memory request
Field: data
dataType: object
Required: Yes
Description: Data bindings for this algo
data.dataSpec
data.dataSpecType: string
Required: Yes
Description: Name of the DataSpec to use
Example:
my-trading-data
Note: The referenced DataSpec must exist and be provisioned before starting the algo.
Field: scheduling
schedulingType: object
Required: No
Description: Algo scheduling configuration
scheduling.type
scheduling.typeType: string
Required: No
Default:
continuousValues:
continuous|scheduledDescription: How the algo should be scheduled
continuous
Algo runs continuously until stopped
scheduled
Algo runs on a cron schedule
scheduling.schedule
scheduling.scheduleType: string
Required: Yes (if type is
scheduled)Format: Cron expression
Description: When to run the algo
Examples:
0 9 * * 1-5— 9 AM weekdays*/5 9-16 * * 1-5— Every 5 minutes during market hours0 0 * * *— Daily at midnight
Complete Examples
Example 1: Basic Continuous Algo
Example 2: Scheduled Backtest
Example 3: Paper Trading with Datafye Container
Example 4: High-Frequency Algo with Large Resources
Validation Rules
Required Fields
apiVersionmust bedatafye.io/v1kindmust beAlgoSpecmetadata.nameis requiredmodeis requiredcontainer.imageis requireddata.dataSpecis required
Container Rules
Image name must be valid (alphanumeric, hyphens, slashes)
Tag must be valid (alphanumeric, hyphens, dots)
Command and args arrays cannot be empty if specified
Resource Rules
CPU format: positive number with optional
msuffixMemory format: positive number with
Mi,Gi,M, orGsuffixLimits must be >= requests
Requests cannot exceed available cluster resources
Scheduling Rules
If
typeisscheduled,scheduleis requiredCron expression must be valid (5 fields: minute hour day month weekday)
Continuous algos ignore
schedulefield
Data Binding Rules
Referenced DataSpec must exist
DataSpec mode should match AlgoSpec mode (live/live, paper/paper, backtest/backtest)
Resource Recommendations
By Algo Type
Simple strategy
250m-500m
256Mi-512Mi
Basic indicators
Complex strategy
500m-1
512Mi-1Gi
Multiple indicators
High-frequency
1-4
2Gi-8Gi
Tick-level processing
Backtest (small)
500m-1
1Gi-2Gi
Short history
Backtest (large)
2-4
4Gi-8Gi
Long history, many symbols
Request vs Limit Guidelines
Requests: Minimum guaranteed resources (used for scheduling)
Limits: Maximum allowed (prevents resource hogging)
Best practice: Set requests at 50-70% of limits for burstable workloads
Related Documentation
Concept guide: Algo Descriptors
Data binding: Data Descriptors
Broker integration: Broker Descriptors
CLI usage: foundry start, trading start
Last updated

