Skip to content

Execution

The page to read before connecting a venue. What the harness can do to a live position, what gates each action, and the two rules it will not break.

On a desk account connected to a venue, with credentials you supply, the harness can do the following. This is the complete list.

Action What it means
Open a position Place an entry for a setup, sized from the risk you named.
Move a stop Tighten or trail the invalidation. See the one-way rule below.
Move a take-profit Adjust the target on an open trade.
Reduce Take size off, partially or fully.
Cancel Withdraw a resting order.
Set leverage Per market, solved rather than chosen.

On a journal account it does none of this, because there is no venue and no credentials. On a paper desk it does all of it against simulated fills at live prices.

Every one of those actions is gated per account. The settings live in the account header, and the agent is bound by them without exception — there is no internal path that skips the gate, because the gate is the only thing standing between a model’s judgement and your balance.

The permission you will care about most is whether a proposal is applied automatically or waits for you. With it off, the agent can reason, size and propose, and nothing reaches the venue until you accept. With it on, it acts inside the caps.

A stop can be tightened and never widened. Not by the agent, and not by you through the agent.

This is the single most important constraint in the system, because widening a stop is how a bounded loss becomes an unbounded one while feeling like patience. The size was solved from the distance to the invalidation; moving the invalidation away breaks the arithmetic that made the position acceptable in the first place. If the thesis has genuinely changed, the honest action is to close and re-enter with a new number, which the harness will happily do.

Orders are priced from the venue mirror in Redis, which is written on every tick, and the mirror is faster than asking the venue over HTTP. But a mirror can stop writing, and a mark that has stopped moving looks exactly like a market that has stopped moving.

So every price record carries the moment it was written, and the pricing path requires a legible age within a few seconds. Anything older falls through to the venue’s own REST endpoint. Critically, a record whose age cannot be determined is treated as unusable rather than as current — “I cannot tell how old this is” resolves to the venue, not to a guess.

That last sentence is in the documentation because it was once false. The check read a field the mirror did not write, so it could not parse an age, and it resolved the unparseable case to fresh — which meant it had never rejected a stale price in its life. A check whose unknown branch returns the permissive answer cannot reject what it does not understand, which is exactly when it should.

It is not an execution venue. Orders are routed to Hyperliquid or Lighter, which hold your funds, match your orders and report your fills. The harness never takes custody and never becomes your counterparty.

It is not a broker, an exchange, a custodian or an investment adviser. The sizing arithmetic and the agent’s reasoning are tools for your decision, not a recommendation — and nothing here is a claim about what any of it returns. The binding version of all of that is Terms of Service.