Skip to main content
The evaluation endpoint gives you a real-time snapshot of where the agent stands in its current evaluation window. Before Halyrd can be promoted to live trading, it must satisfy three criteria simultaneously: a positive expectancy across closed trades, a minimum number of closed trades (the trade floor), and a maximum drawdown that stays within the configured cap. This endpoint exposes each of those objectives individually so you can track progress day by day and diagnose exactly which criteria are — or aren’t — being met.

GET /agents//evaluation

Returns the current evaluation state, window progress, and the status of each individual objective.
GET http://localhost:8000/agents/current/evaluation
Response
{
  "state": "EVALUATING",
  "eligible": false,
  "window_days_elapsed": 3,
  "eval_window_days": 7,
  "trade_floor": 10,
  "closed_trades": 5,
  "objectives": [
    {
      "rule": "positive_expectancy",
      "current": 0.0042,
      "limit": null,
      "met": true
    },
    {
      "rule": "trade_floor",
      "current": 5,
      "limit": 10,
      "met": false
    },
    {
      "rule": "max_drawdown",
      "current": 0.035,
      "limit": 0.20,
      "headroom_pct": 82.5,
      "met": true
    }
  ]
}

Top-level fields

FieldTypeDescription
statestringCurrent evaluation state. See values below.
eligiblebooleantrue when every objective in the objectives array has met: true.
window_days_elapsedintegerNumber of calendar days that have elapsed in the current evaluation window.
eval_window_daysintegerTotal configured length of the evaluation window in days.
trade_floorintegerMinimum number of closed trades required for the trade_floor objective to pass.
closed_tradesintegerNumber of trades closed so far in this evaluation window.
objectivesarrayPer-rule status objects. See below.

state values

ValueDescription
EVALUATINGThe window is active and in progress; not all objectives are met yet.
ELIGIBLEAll objectives are met; the agent can be promoted to live.
WINDOW_EXTENDEDThe original window deadline passed with the trade floor unmet; the window has been extended automatically to give the agent more time to accumulate trades.

Objective fields

FieldTypeDescription
rulestringIdentifier for the risk/performance rule being evaluated (e.g. positive_expectancy, trade_floor, max_drawdown).
currentnumberThe rule’s current measured value. For drawdown rules this is a decimal fraction; for trade counts it is an integer.
limitnumber | nullThe threshold the current value must not exceed (or must reach, for floor rules). null when the rule is direction-only (e.g. expectancy just needs to be positive).
headroom_pctnumber | nullHow much room remains before the limit is hit, expressed as a percentage of the limit. null for count-based rules where headroom isn’t meaningful.
metbooleanWhether this individual objective is currently satisfied.
eligible: true is a readiness signal, not an automatic action. Even when all objectives are met and the state transitions to ELIGIBLE, the agent stays in paper mode until you explicitly promote it via POST /agents/{id}/promote in Settings or via the API.