level2 · Schema

Level2 Trading Strategy

Schema for a Level2 automated trading strategy created through the visual no-code strategy builder. Defines the structure of strategy definitions including entry and exit conditions, risk management rules, position configuration, and instrument settings.

Properties

Name Type Description
id string Unique identifier for the strategy
userId string The identifier of the user who owns this strategy
name string A human-readable name for the trading strategy
description string A description of the strategy's purpose and trading logic
instrument string The primary ticker symbol this strategy trades (e.g., AAPL, MSFT)
instrumentType string The type of financial instrument being traded
timeframe string The primary chart timeframe the strategy operates on
status string The current lifecycle status of the strategy
definition object
createdAt string ISO 8601 timestamp when the strategy was created
updatedAt string ISO 8601 timestamp when the strategy was last modified
deployedAt string ISO 8601 timestamp when the strategy was last deployed for live trading
View JSON Schema on GitHub

JSON Schema

level2-strategy-schema.json Raw ↑
{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://trylevel2.com/schemas/level2/strategy.json",
  "title": "Level2 Trading Strategy",
  "description": "Schema for a Level2 automated trading strategy created through the visual no-code strategy builder. Defines the structure of strategy definitions including entry and exit conditions, risk management rules, position configuration, and instrument settings.",
  "type": "object",
  "required": ["name", "instrument", "definition"],
  "properties": {
    "id": {
      "type": "string",
      "description": "Unique identifier for the strategy"
    },
    "userId": {
      "type": "string",
      "description": "The identifier of the user who owns this strategy"
    },
    "name": {
      "type": "string",
      "description": "A human-readable name for the trading strategy",
      "maxLength": 200,
      "minLength": 1
    },
    "description": {
      "type": "string",
      "description": "A description of the strategy's purpose and trading logic",
      "maxLength": 2000
    },
    "instrument": {
      "type": "string",
      "description": "The primary ticker symbol this strategy trades (e.g., AAPL, MSFT)",
      "minLength": 1
    },
    "instrumentType": {
      "type": "string",
      "description": "The type of financial instrument being traded",
      "enum": ["stock", "option", "future"]
    },
    "timeframe": {
      "type": "string",
      "description": "The primary chart timeframe the strategy operates on",
      "enum": ["1m", "5m", "15m", "30m", "1h", "4h", "1d"]
    },
    "status": {
      "type": "string",
      "description": "The current lifecycle status of the strategy",
      "enum": ["draft", "active", "deployed", "inactive"]
    },
    "definition": {
      "$ref": "#/$defs/StrategyDefinition"
    },
    "createdAt": {
      "type": "string",
      "format": "date-time",
      "description": "ISO 8601 timestamp when the strategy was created"
    },
    "updatedAt": {
      "type": "string",
      "format": "date-time",
      "description": "ISO 8601 timestamp when the strategy was last modified"
    },
    "deployedAt": {
      "type": "string",
      "format": "date-time",
      "description": "ISO 8601 timestamp when the strategy was last deployed for live trading"
    }
  },
  "$defs": {
    "StrategyDefinition": {
      "type": "object",
      "description": "The core strategy definition containing entry conditions, exit conditions, risk management, and position configuration built using the Level2 visual drag-and-drop interface.",
      "properties": {
        "entryConditions": {
          "type": "array",
          "description": "Ordered list of conditions that must be satisfied to trigger a trade entry",
          "items": {
            "$ref": "#/$defs/StrategyCondition"
          }
        },
        "exitConditions": {
          "type": "array",
          "description": "Ordered list of conditions that trigger closing an open position",
          "items": {
            "$ref": "#/$defs/StrategyCondition"
          }
        },
        "riskManagement": {
          "$ref": "#/$defs/RiskManagement"
        },
        "position": {
          "$ref": "#/$defs/PositionConfig"
        }
      }
    },
    "StrategyCondition": {
      "type": "object",
      "description": "A single condition in the strategy logic, representing a comparison between a technical indicator or price value and a target value or another indicator.",
      "required": ["indicator", "operator"],
      "properties": {
        "id": {
          "type": "string",
          "description": "Unique identifier for this condition within the strategy"
        },
        "indicator": {
          "type": "string",
          "description": "The technical indicator or data source (e.g., SMA, EMA, RSI, MACD, BollingerBands, Price, Volume). Level2 supports 104 technical indicators.",
          "minLength": 1
        },
        "parameters": {
          "type": "object",
          "description": "Configuration parameters for the indicator, such as period length, source field, or standard deviation multiplier",
          "additionalProperties": true
        },
        "operator": {
          "type": "string",
          "description": "The comparison operator that defines the relationship between the indicator value and the compare value",
          "enum": ["crosses_above", "crosses_below", "greater_than", "less_than", "equals"]
        },
        "compareValue": {
          "description": "The target value or indicator configuration to compare against. Can be a numeric threshold, a string reference, or a nested indicator object.",
          "oneOf": [
            {
              "type": "number"
            },
            {
              "type": "string"
            },
            {
              "type": "object",
              "additionalProperties": true
            }
          ]
        },
        "logicalOperator": {
          "type": "string",
          "description": "Defines how this condition combines with the next condition in the sequence",
          "enum": ["AND", "OR"]
        }
      }
    },
    "RiskManagement": {
      "type": "object",
      "description": "Risk management settings that control loss limits and profit targets for the strategy.",
      "properties": {
        "stopLoss": {
          "type": "number",
          "description": "Stop loss value as a percentage or absolute price distance",
          "minimum": 0
        },
        "stopLossType": {
          "type": "string",
          "description": "Whether the stop loss value is a percentage of entry price or an absolute price distance",
          "enum": ["percentage", "absolute"]
        },
        "takeProfit": {
          "type": "number",
          "description": "Take profit value as a percentage or absolute price distance",
          "minimum": 0
        },
        "takeProfitType": {
          "type": "string",
          "description": "Whether the take profit value is a percentage or an absolute price distance",
          "enum": ["percentage", "absolute"]
        },
        "trailingStop": {
          "type": "number",
          "description": "Trailing stop distance as a percentage that follows the price in the profitable direction",
          "minimum": 0
        },
        "maxPositions": {
          "type": "integer",
          "description": "Maximum number of concurrent open positions allowed",
          "minimum": 1
        }
      }
    },
    "PositionConfig": {
      "type": "object",
      "description": "Configuration for trade entry sizing, direction, and order type.",
      "properties": {
        "side": {
          "type": "string",
          "description": "The allowed trade direction for the strategy",
          "enum": ["long", "short", "both"]
        },
        "orderType": {
          "type": "string",
          "description": "The order type used when entering positions",
          "enum": ["market", "limit", "stop"]
        },
        "quantity": {
          "type": "number",
          "description": "The trade size per entry",
          "minimum": 0,
          "exclusiveMinimum": true
        },
        "quantityType": {
          "type": "string",
          "description": "The unit for the quantity value",
          "enum": ["shares", "contracts", "dollars"]
        }
      }
    },
    "BacktestResult": {
      "type": "object",
      "description": "Results from running a backtest on a strategy against historical market data.",
      "properties": {
        "strategyId": {
          "type": "string",
          "description": "The identifier of the strategy that was backtested"
        },
        "startDate": {
          "type": "string",
          "format": "date",
          "description": "The start date of the backtest period"
        },
        "endDate": {
          "type": "string",
          "format": "date",
          "description": "The end date of the backtest period"
        },
        "initialCapital": {
          "type": "number",
          "description": "The starting capital amount in USD",
          "minimum": 0
        },
        "finalCapital": {
          "type": "number",
          "description": "The ending capital amount after all trades"
        },
        "totalReturn": {
          "type": "number",
          "description": "Total return as a decimal (e.g., 0.15 for 15%)"
        },
        "totalTrades": {
          "type": "integer",
          "description": "Total number of completed trades",
          "minimum": 0
        },
        "winningTrades": {
          "type": "integer",
          "description": "Number of trades that were profitable",
          "minimum": 0
        },
        "losingTrades": {
          "type": "integer",
          "description": "Number of trades that resulted in a loss",
          "minimum": 0
        },
        "winRate": {
          "type": "number",
          "description": "Percentage of winning trades as a decimal between 0 and 1",
          "minimum": 0,
          "maximum": 1
        },
        "maxDrawdown": {
          "type": "number",
          "description": "Maximum peak-to-trough decline as a decimal"
        },
        "sharpeRatio": {
          "type": "number",
          "description": "Risk-adjusted return metric (Sharpe ratio)"
        },
        "profitFactor": {
          "type": "number",
          "description": "Ratio of gross profits to gross losses",
          "minimum": 0
        }
      }
    }
  }
}