Validation checks whether strategy JSON is structurally safe and internally consistent. The builder validates before treating a strategy as ready. You should fix every validation error before running, sharing, or generating strategy JSON for another system.Documentation Index
Fetch the complete documentation index at: https://docs.miramarket.org/llms.txt
Use this file to discover all available pages before exploring further.
Shape rules
The top-level strategy must be an object with these fields:versionstrategy_idinitial_principal_usdroot_node_idnodesedgesdecision_groups
nodes, edges, and decision_groups must be arrays.
initial_principal_usd must be a finite number greater than 0.
Node rules
Every node needs a uniquenode_id.
Every node must have type: "CONDITION" or type: "ACTION".
Every node must have level >= 0.
root_node_id must reference an existing node.
Market actions require target.market.token_id.
Edge rules
Edges only encode continuation from an action to a later condition. Valid edge direction:decision_groups, not edges.
Level rules
The root node is level0.
A condition and its selected actions must have the same level.
When an action continues to a child condition, the child condition level must be the action level plus 1.
Decision group rules
Every condition must appear in exactly one decision group. Every decision group must reference one condition and at least one action. The decision group condition and actions must all be on the same level. Ifmode is SPLIT_100, the referenced actions must have allocation_pct values that sum to 100.
Timing rules
TIME_SINCE_GROUP_SECONDS requires a timing object.
For BEFORE_CLOSE, seconds_before_close must be greater than 0.
For ABSOLUTE_TIME, absolute_trigger_time_iso must be present.
Non-time signals must not include timing.
Graph rules
The graph must be acyclic. A strategy cannot loop back to a prior node.Fee-aware principal check
For market actions, validation can estimate the minimuminitial_principal_usd needed to clear market order minimums after allocation splits and estimated fees.
The estimate uses:
| Value | Meaning |
|---|---|
CLOB_MIN_USD | Minimum order size in dollars. |
CLOB_MIN_SHARES | Minimum number of shares. |
MAX_TRADING_FEE_RATE | Conservative fee estimate. |
DEFAULT_LEAF_PRICE | Fallback price when no current price is supplied. |
initial_principal_usd, reduce split depth, or provide accurate current_price values for market targets.
Common errors
| Error pattern | Fix |
|---|---|
nodes must be an array | Set nodes to an array, even for generated JSON. |
root_node_id does not reference an existing node | Make root_node_id match a node_id. |
must be ACTION -> CONDITION | Move condition-to-action relationships into decision_groups. |
split allocation is ..., expected 100 | Adjust action allocation_pct values. |
requires target.market.token_id | Add the outcome token ID to the market action. |
Graph contains a cycle | Remove the edge that loops back to an earlier node. |
Agent checklist
Before returning generated strategy JSON, verify:initial_principal_usd > 0.root_node_idexists innodes.- Every
node_idis unique. - Every condition has exactly one decision group.
- Every decision group action ID exists and references an action.
- Every split group sums to
100. - Every edge is action-to-condition.
- No cycle exists.
- Every market action has
token_id.