Paper mode vs live mode
Halyrd’s two modes — paper and live — run the same agent code. The only thing that changes between them is how orders are filled. In paper mode, the agent gets a real executable quote from TWAK (the same source it would use to make a live trade), applies a pessimistic fill model that includes swap fees, gas, and slippage, and records the result against a virtual portfolio. The simulated fills are deliberately not optimistic — they reflect what you would actually receive on BSC. In live mode, the agent calls TWAK to sign and broadcast a real swap transaction on BSC mainnet. The signal logic, fee filter, and risk checks that ran in paper mode run identically.Because paper and live price trades from the same TWAK quote source, there is no hidden gap between how paper results were calculated and what live execution would look like. The track record you build in paper mode is an honest one.
Evaluation
While the agent runs in paper mode it builds a track record. The Risk Engine continuously measures that record against three criteria. Only when all three are satisfied does the agent receive an ELIGIBLE status. 1. Positive expectancy after fees The average profit per closed trade, once swap fees, gas costs, and slippage are subtracted, must be positive. An agent that wins often but loses more than it earns on fees does not pass this criterion. 2. Trade floor of closed trades A minimum number of completed round-trips must exist before expectancy is treated as meaningful. Below this floor, a run of lucky early trades produces a misleadingly good number. The evaluation window extends automatically if the trade floor has not been reached when the window would otherwise close. 3. No max-drawdown breach during the window The agent’s equity must not have hit its hard drawdown ceiling at any point during the evaluation window. A single breach resets eligibility for that config version.An agent that stalls before reaching the trade floor — because it rarely finds trades that clear the fee filter — is giving you accurate information: its capital is too small relative to fixed per-trade costs to generate enough activity. This is not a product limitation; it is the correct, capital-agnostic signal.
Promotion
Promotion is the moment your agent switches from simulated fills to real BSC transactions. It is manual by default: the dashboard shows you the evaluation results, and you make the decision to flip the agent live. When you confirm promotion, the dashboard moves the status badge from ELIGIBLE to LIVE, the first real signed transaction hash appears as a milestone on the equity chart, and TWAK’s guardrails activate for all subsequent orders. If your agent has not yet been marked ELIGIBLE, you can still promote using force promote. This path is always available — the evaluation produces evidence, not a lock — but the dashboard shows an additional warning to make the decision deliberate.Demotion
Halyrd demotes agents automatically when a risk rule is breached in live mode. The agent never silently continues trading past a limit. Daily drawdown breach → live locked until the next UTC day If the agent’s equity falls by more than the configured daily drawdown percentage within a single UTC day, live trading is paused until midnight UTC. The agent does not stop running — it keeps paper-trading through the lockout, building track record data and journaling every decision. The dashboard shows a PAPER sub-badge so the current mode is never ambiguous. Live trading resumes automatically when the new UTC day begins. Max drawdown breach → demoted to paper until you re-approve If the agent’s equity falls below the hard max-drawdown ceiling, it immediately flattens all positions to USDT and returns to paper mode. It will not go live again until you review its paper-mode results and manually approve re-promotion. The journal records the exact rule that fired and when.Risk Engine — the policy layer
The Risk Engine is Halyrd’s intelligent, strategy-aware safety layer. It runs identically in both paper and live mode. Before every trade it asks: would this order risk breaching any configured rule? After every hourly equity snapshot it checks whether any threshold has been crossed. When the Risk Engine blocks a trade, the block appears in the journal with a plain-English explanation (“Trade blocked: would breach daily drawdown limit”), in the risk desk’s policy column, and as a real-time update the dashboard displays immediately. The Risk Engine is smart but fallible. It lives in the application code, it depends on correct state, and like all code it can have bugs. That is exactly why TWAK guardrails exist as a separate, independent layer beneath it.TWAK guardrails — the physics layer
The TWAK guardrails operate at the transaction-signing layer, outside Halyrd’s application code entirely. They are configured on the Trust Wallet Agent Kit signer and enforced before any transaction can be broadcast.| Guardrail | What it enforces |
|---|---|
| Token allowlist | Only tokens on the approved list can be swapped. The allowlist always covers at least every token on your active watchlist. |
| Per-trade cap | No single swap can exceed a configured maximum size. |
| Daily volume cap | Total daily swap volume is capped regardless of how many individual trades occur. |
| Slippage protection | Every swap includes a maximum-slippage bound enforced at signing time. |
| Kill switch | Revoking the TWAK session immediately prevents the agent from signing any further transactions. |
StrategySpec — declarative strategy definition
Every Halyrd strategy is defined as a StrategySpec: a YAML document that describes indicators, entry and exit conditions, a regime filter, and position-sizing parameters. The spec is declarative — it describes rules, not executable code — which means it can be backtested, validated, and audited before it is ever attached to a live agent. A minimal spot strategy spec looks like this:market_mode field is required and must be set first. On spot mode, the parser rejects any signal configuration that would produce a short sell — spot trading is long-only, exiting to USDT between positions.
StrategySpecs drive both the in-app backtester and the live signal engine. The same YAML you test in the research area is what the agent loads when it runs.