Top-level object
| Field | Type | Required | Meaning |
|---|---|---|---|
version | string | Yes | Strategy JSON version. |
strategy_id | string | Yes | Stable strategy identifier. |
initial_principal_usd | number | Yes | Starting capital in USD. Must be greater than 0. |
root_node_id | string | Yes | node_id of the root node. |
nodes | array | Yes | Condition and action nodes. |
edges | array | Yes | Action-to-condition continuation edges. |
decision_groups | array | Yes | Condition-to-action selection groups. |
is_demo | boolean | No | When true, skips the fee-aware principal check. |
Nodes
Each node is either aCONDITION or an ACTION.
| Field | Type | Required | Meaning |
|---|---|---|---|
node_id | string | Yes | Unique node identifier. |
type | string | Yes | CONDITION or ACTION. |
level | number | Yes | Graph level. Must be 0 or greater. |
condition | object | For condition nodes | Decision logic. |
action | object | For action nodes | Capital movement or execution instruction. |
Condition object
| Field | Type | Required | Meaning |
|---|---|---|---|
watch | object | Yes | Market or selector to observe. |
signal | string | Yes | Signal type. |
trigger | string | Yes | CROSS_ABOVE or CROSS_BELOW. |
threshold | number | Yes | Trigger threshold. |
timing | object | For time signals | Timing details. |
reference | object | No | Reference mode for return or PnL signals. |
stabilizers | object | No | Hysteresis or cooldown settings. |
conjuncts | array | No | Additional AND clauses. |
Action object
| Field | Type | Required | Meaning |
|---|---|---|---|
action_type | string | Yes | Action to perform. |
allocation_pct | number | Required in SPLIT_100 groups | Percentage of selected capital. |
target | object | Yes | Market, wallet, or vault target. |
risk_guards | object | No | Execution guardrails. |
Edges
Edges represent continuation after an action.Decision groups
Decision groups represent condition-to-action selection.| Field | Type | Required | Meaning |
|---|---|---|---|
group_id | string | Yes | Unique decision group identifier. |
condition_node_id | string | Yes | Condition node that selects actions. |
action_node_ids | array | Yes | Actions selected by the condition. |
level | number | Yes | Same level as the condition and selected actions. |
mode | string | Yes | SINGLE or SPLIT_100. |
priority_order | array | No | Ordered action IDs for priority-aware selection. |
Relationship model
Usedecision_groups for condition-to-action relationships.
Use edges only for action-to-condition continuation.